公認会計士が請求書作成システム→プログラミング作成に挑む

私は公認会計士・税理士であって、ノンプログラマーではあるのですがプログラミングへの情熱が止みません。。!もう会計や管理業務周りで煩雑な業務をしたくない。。

MFやFreeeでの請求書作成ポチポチ作業に嫌気がさして、重い腰を上げて請求書をマクロで作り上げていく過程を全力公開してみます!

請求書作成オススメ業務フロー図解

請求書作成システムへの手入力、ダメ絶対><

例えば、弊所で当初使用していたfreee請求書のUIは以下の画面の通りです。

freee請求書 新規入力画面

紙ベースの請求書をシステム上で入力するという仕様になっており、紙ベースの請求書に手書きにて記載していくのとあまり操作感が変わりません。泣

特に個人的には請求日や入金期日をシステム上のカレンダーで該当日付をクリックする必要があるのが無駄が多いと感じます、

請求日はまだデフォルトで当日の日付が入るのですが、入金期日は完全に手入力。。ここのポチポチが毎回面倒なんです、、(><)

入金期日はおおよそ規則性がある(請求日の当月末、翌月末等)ためここは是が非でも自動化したいところです!

請求書作成手順

①請求書フォーマットとそちらへ転記する用のデータベース作成

それでは、Excelベースで仕組みを作成してみましたので、以下にてサンプルを書いていきます。

A.まずこういったデータベースを蓄積していくシートを作成します。

ポイントは

日付の列は本日であれば、Ctl+;のショートカットキーにて即入力

入金期日の列であれば、下記画像のようにEOMONTH関数を入れておき、日付の列に連動して自動入力を図ります。

※()の部分については

(,0)であれば当月末

(,1)であれば翌月末

の日付となります。

B.次にinvoice(請求書)シートの仕組みを構築します。

ポイントは全てdataシートから転記するのではなく、Excelに入力しておいた方が良い以下の赤枠部分に関しては

既に固定情報を入力OR計算式を入力しておくようにします。このようなシートです。

②シート間で情報を転記するマクロの作成

マクロの精緻な解説はここではひかえますが、現代ではAIとのやり取りで何とか動くものを生み出せる良い時代です!

今回のコードもAIとGoogle検索を駆使して作りました!以下のようなコードです。

Sub 請求書を個別にPDF出力()

    Dim i As Long
    Dim lastRow As Long
    Dim dataWs As Worksheet
    Dim invoiceWs As Worksheet
    Dim savePath As String
    Dim fileName As String

    ' シート設定
    Set dataWs = Worksheets("data")
    Set invoiceWs = Worksheets("invoice")

    ' 最終行を取得(A列にデータがある想定)
    lastRow = dataWs.Cells(dataWs.Rows.Count, 1).End(xlUp).Row

    ' 保存先(例:デスクトップ)
    savePath = Environ("USERPROFILE") & "\Desktop\請求書PDF\"

    ' フォルダが無ければ作成
    If Dir(savePath, vbDirectory) = "" Then MkDir savePath

    ' データ行を1件ずつ処理
    For i = 2 To lastRow ' 1行目は見出し

        ' データを請求書に転記(必要に応じて調整)
        invoiceWs.Range("A5").Value = dataWs.Cells(i, 1).Value ' 郵便番号
        invoiceWs.Range("A6").Value = dataWs.Cells(i, 2).Value ' 住所
        invoiceWs.Range("A7").Value = dataWs.Cells(i, 3).Value ' 請求先名
         invoiceWs.Range("B24").Value = dataWs.Cells(i, 4).Value ' 項目
         invoiceWs.Range("D24").Value = dataWs.Cells(i, 5).Value ' 金額
         invoiceWs.Range("D5").Value = dataWs.Cells(i, 6).Value ' 請求日
         invoiceWs.Range("D7").Value = dataWs.Cells(i, 7).Value ' 入金期日

        ' PDFファイル名を作成(例:氏名_日付.pdf)
        fileName = savePath & _
                   "請求書_" & dataWs.Cells(i, 1).Value & "_" & Format(dataWs.Cells(i, 2).Value, "yyyymmdd") & ".pdf"

        ' PDF出力
        invoiceWs.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            fileName:=fileName, _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=False

    Next i

    MsgBox "全ての請求書をPDF出力しました!", vbInformation

End Sub

→こちらのマクロを実行すると取引先ごとのPDFファイルを作成できました!「全ての請求書をPDF出力しました!」のポップアップが出ると成功です!!

→こちらのフォルダ上にPDFが3つ生成されており、開くと、、

→無事に作成できてますね!

プログラミングはエラーとの戦いは大変ですが、思い通りに動いてくれると相当感動するので一度是非トライしてみてくださいね。今は生成AIがあるのでノンプログラマーにもかなり門戸は開かれていると感じます!!

ご参考までに、画面操作動画は以下となります!(音声はなしの操作画面のみです)

以下のサービスメニューにて、本件のような業務自動化について個別のケースに即した相談についても承っております、

単発でのご利用も大歓迎です。

編集後記

1回きりの作成だとさほど手間を感じないため、つい手作業でやりがちなのですが

今後何回実施するのであろうというこういった繰り返しの反復作業とプログラミングの相性は抜群です!

目の前で追われている作業を終わらせることに気を取られすぎずに、踏ん張って業務自動化の構築を試みていきたいですね!(自戒を込めて。。)

1日1新

VS CODE(プログラミングコードを編集して作っていくためのコード用EDITOR。これをいじっているとプログラマー気分に近づいてテンションあがるためオススメです!笑)


PAGE TOP