販売実績のエクセルデータを利用して、請求書を自動的に作成するエクセルマクロを紹介しています。
前回は、シートに入力した取引先と日付をマクロに取り込むところまででした。
今回は、請求書作成マクロを完成させます。
請求書を作成するマクロ
Sub 請求書作成() Dim BillDest As Integer Dim BillDate As Date Dim BillName As String Dim BillPost As String Dim BillAddr As String ' 入力した取引先と日付を取込 With ActiveSheet BillDest = .Range("E3").Value BillDate = .Range("C5").Value End With ' 取引先の№から取引先名に変換 With ThisWorkbook.Worksheets("取引先") BillName = .Range("A1").Offset(BillDest, 0).Value BillPost = .Range("A1").Offset(BillDest, 1).Value BillAddr = .Range("A1").Offset(BillDest, 2).Value End With ' 請求書に取引先名~住所を貼り付け With ThisWorkbook.Worksheets("請求書") .Range("B3").Value = BillName .Range("C5").Value = "〒" & BillPost .Range("C6").Value = BillAddr End With ' 条件に合った販売実績を請求書に貼り付け Dim selRG As Range Dim selRW As Range Dim sLine As Integer Dim iName As String Dim iNum As Integer Dim iAmt As Integer sLine = 0 With ThisWorkbook.Worksheets("販売実績") Set selRG = .Range(.Range("A2"), .Range("A2").End(xlDown)) For Each selRW In selRG ' 条件に合った行かを判定 If IsDate(selRW.Value) Then If Year(selRW.Value) = Year(BillDate) And Month(selRW.Value) = Month(BillDate) And _ .Cells(selRW.Row, 2) = BillName Then ' 請求明細 iName = .Cells(selRW.Row, 3) iNum = .Cells(selRW.Row, 4) iAmt = .Cells(selRW.Row, 5) ' 請求書に張り付け sLine = sLine + 1 With ThisWorkbook.Worksheets("請求書") .Cells(sLine + 11, 2) = sLine .Cells(sLine + 11, 3) = iName .Cells(sLine + 11, 11) = iNum .Cells(sLine + 11, 12) = "コ" .Cells(sLine + 11, 13) = iAmt End With End If End If Next selRW Set selRG = Nothing End With End Sub
マクロで作成した請求書
マクロを実行するとこんな請求書ができます。
考察
ボタン1つクリックするだけで請求書を作成するマクロが60行程度です。
販売実績のシートに都度販売データを入力し、締め日が来たら、取引先と締め日を選択してボタン1つクリックするだけです。締め日に販売データをかき集めてエクセルに入力したり、電卓をたたいたりしなくでも良いんです。
こんな風にマクロを活用すれば、請求書が簡単に出来ます。といった例ですので、改良点はたくさんあります。
- 販売実績のシートで取引先の名前を間違えて入力すると請求書には出てきません。
- この例では、締め日が月末ですが、通常は取引先毎に締め支払日が異なるはずです。
- 請求№・請求日やお支払い期限の項目も締め日や支払サイトなどの情報があれば請求書に表示できるはずです。
などなど…
いかがでしたか
エクセルマクロを使った請求書作成ツールの紹介は今回で終了です。
ではまた