エクセル(Excel)で管理をしている入金表から領収書(インボイス制度対応)を自動(自動転記)で作成する(VBA)

ExcelVBA

・きっかけ

先日、取引先の担当者様からの相談で、電子帳簿保存法とインボイス制度の対応を皮切りにDXに取り組もうと経営陣から、新システムの導入を検討するように提案されたのですが、運用コストの発生やシステム機能と実際の業務の間にギャップがあり、逆に仕事が増える可能性があるので現状の業務の改善策を提案して、新システムの導入について保留にしてもらう方向にしたいとのことでした。
その問題となっている業務(改善したい業務で手間になっている業務)の一つに請求・入金管理の一部である領収書の発行があり、取引先毎にワード(Microsoft Word)で作成していた領収書をエクセルに変換(領収書の書式は知り合いの税理士先生にエクセル書式を確認済みの制度対応書式)し領収書シートとして管理台帳(エクセル)ブックへ追加。管理台帳の入金情報を自動で転記すれば、転記ミスも減らせるとのことから、エクセルとVBAを使って解決できるのではないかと考え、コードを入力したときのことを書かせていただきました。同じような状況に置かれた方に参考になれば幸いです。
また、このエクセルは一覧から選択(選択行)した取引先の領収書へ自動転記するVBAについて説明をしております。
※1 ページの最後にサンプルファイルがございます。
※2 2023年12月時点の情報です。

・今回のVBAではこんなことができます

・一覧表から選択中の行から必要情報を別シートに自動転記できます。
 (記事の内容は請求一覧シートから領収書シートへ自動転記)

・こんな方におすすめです

・毎回、他の書式シートへコピー&貼り付け(又は手入力)作業を行っている方。

・用意したエクセルシート(使用例用のサンプルです。)

情報を管理するにあたり、請求と入金を管理するシート「一覧」と領収書を発行するための「領収書」シートを用意しました。(これはサンプルシートですが必要な場合は下記でダウンロードできます。)

・一覧シート(管理番号ごとに取引先へ請求した金額を管理するシート)
 シートの列について説明
 ・管理番号 ・・・ 重複しない文字や数字の組み合わせで自社で管理しやすい番号を入力します。
 ・請求日 ・・・ 請求書の発行日を入力します。
 ・請求額(10%) ・・・ 請求する金額を税込みで入力します。
 ・入金額 ・・・ 発行した請求書に対する入金額(請求先からの支払額)を入金します。
 ・未収(差額) ・・・ 請求した金額と入金額の差額を計算しています。(関数で転記はなし)
 ・備考 ・・・ 備考がある場合入力します。(転記はなし)

・領収書シート(入金が確認できたときに発行します。)
 ※サンプルファイルの領収書のシートを自動入力しない場合は発行の度、I4、I5、A6、B8、B15、 E15のセルに数字を入力します。

・入力例「一覧」シートに配置した「領収書」ボタン(CommandButton)のコード

Private Sub CommandButton1_Click()
'領収書情報をリセット
Sheet2.Range("I4").Value = ""
Sheet2.Range("A6").Value = ""
Sheet2.Range("I5").Value = ""
Sheet2.Range("B8").Value = ""
Sheet2.Range("B15").Value = ""
Sheet2.Range("E15").Value = ""


'現在、一覧シートで選択中の取引先情報を転記する
    '管理番号の転記
    Sheet2.Range("I4").Value = "管理番号: " & Cells(Selection.Row, 1).Value
    '取引先の転記
    Sheet2.Range("A6").Value = Cells(Selection.Row, 3).Value
    '入金日の転記
    Sheet2.Range("I5").Value = Cells(Selection.Row, 5).Value
    '入金額(受領金額)の転記
    Sheet2.Range("B8").Value = Cells(Selection.Row, 6).Value
    
    '内訳の転記(10%)
    Sheet2.Range("B15").Value = Cells(Selection.Row, 6).Value
    Sheet2.Range("E15").Value = Cells(Selection.Row, 6).Value / 1.1 * 0.1
    
    '領収書シートへ移動
    Sheet2.Select
    
End Sub

・まとめ

今回のVBAはコードも少ないので、管理・保守もそこまで難しくないとは思っております。
しかし、この相談を通じて思ったことですが、DXを進めるためには利益をうける人が誰か!?など業務フローをしっかり理解しないと、毎月無駄な固定費用が発生するだけと思ってしまいます。経営陣の中にはお客様によく見せようと現場の意見は聞かず高額なシステムを導入しようとする方もいらっしゃいますが、あくまで個人の意見で、私が意見したことによって方針が変わるわけではありませんし、利用する部門が不満に思っているのに強行することにモヤモヤしているのも分かっておりますし、きっとこの記事を書いているときはこういう取引様の案件が要求しているものと弊社ができるサービスに大きな差があったのは確かで、かつ私の考えと合わなかったのかもしれません。一番使うのは現場なので、そこの意見をきちんと聞かずに導入することによって逆に現場がシステムに縛られ効率が悪くなったりする可能性もあります。利用者が現状業務に対してしっかり理解していることや最新の技術や情報を仕入れ、本当にそのシステムが必要なのか判断ができること、業務フローが曖昧なものではなく明確化することがDXのスタート地点なのではないでしょうか。
ここまでご覧いただき、誠にありがとうございます。
こんな私ですが、実体験を公開しておりますので、他の記事も読んでいただけると幸いです。

・ご注意

・掲載されている内容には細心の注意をしてるつもりですが、
間違いやご指摘等がありましたら、「お問い合わせ」からご連絡をいただけますと幸いです。
・掲載されている入力VBAコード等は動作を保証するものではなく、あくまでサンプルとして掲載しております。
・掲載されている入力VBAコード等は自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
・対応バージョン
 Excel2021、2019、2016

サンプルファイル(自己責任でご使用ください)
※サンプルファイルはコードが入力されておりませんので、上記(ボタンクリックのイベントPrivate Sub CommandButton1_Click()~End Subの間)のコードをコピーし貼付して下さい。

コメント