アフィリエイト広告を利用しています

請求書を作るマクロ

取引業者の名簿と業者ごとの請求金額の一覧表から、請求書を作るマクロの説明をします。

請求書の様式にデータを組み込んで、請求書を作るマクロです。
ワークシートSheet1→請求書送付先
ワークシートSheet2→請求額合計
ワークシートSheet3→請求書作成

ワークシート全体をコピーして、ブックに新しいワークシートを追加します。

複数の文字列を、文字列演算子で1つにまとめる方法を説明します。

日付を取得する関数を使って、請求書に日付を埋め込みます。

目次

元になるデータの準備

■ コード内を「Wクリック」で選択できます。

Sub サンプル0020()
<pre><code>'変数の宣言
Dim WS1 As Object, WS2 As Object, WS3 As Object

'Setステートメント
Set WS1 = Worksheets("sheet1")
Set WS2 = Worksheets("sheet2")
Set WS3 = Worksheets("sheet3")

With WS1
    .Range("A1") = "請求書送付先"
    .Range("A3") = "業者コード"
    .Range("B3") = "業者名"
    .Range("C3") = "担当者"
    .Range("D3") = "電話番号"

    .Range("A4") = "A0001"
    .Range("A5") = "A0002"
    .Range("A6") = "A0003"

    .Range("B4") = "山形食品"
    .Range("B5") = "ゼネラルマート"
    .Range("B6") = "どんと食品"

    .Range("C4") = "鈴木"
    .Range("C5") = "山本"
    .Range("C6") = "石井"

    .Range("D4") = "03-3333-2222"
    .Range("D5") = "044-222-6666"
    .Range("D6") = "03-3333-5555"
End With

With WS2
    .Range("A1") = 8
    .Range("B1") = "月分請求額合計"
    .Range("A3") = "業者コード"
    .Range("B3") = "請求金額"

    .Range("A4") = "A0001"
    .Range("A5") = "A0002"
    .Range("A6") = "A0003"

    .Range("B4") = 479000
    .Range("B5") = 1176000
    .Range("B6") = 778000

     'セルの書式を通貨にする
    .Range("B4:B6").NumberFormatLocal = "\#,##0;\-#,##0"
End With

'セルの背景色を変える
WS1.Range("A3:D3").Interior.ColorIndex = 4
WS2.Range("A3:B3").Interior.ColorIndex = 4

'範囲のセルの列幅を自動調整する
WS1.Columns("A:D").AutoFit
WS2.Columns("A:B").AutoFit

'セルの範囲に罫線を引く
WS1.Range("A3:D6").CurrentRegion.Borders.LineStyle = xlContinuous
WS2.Range("A3:B6").CurrentRegion.Borders.LineStyle = xlContinuous</code></pre>
With WS3
'セルの範囲に罫線を引く
.Range("A5").Borders(xlEdgeBottom).LineStyle = xlContinuous
.Range("B8:D8").Borders(xlEdgeTop).LineStyle = xlContinuous
.Range("B8:D8").Borders(xlEdgeBottom).LineStyle = xlContinuous
.Range("B8:D8").Borders(xlEdgeLeft).LineStyle = xlContinuous
.Range("B8:D8").Borders(xlEdgeRight).LineStyle = xlContinuous
.Range("F3").Borders(xlEdgeTop).LineStyle = xlContinuous
.Range("F3").Borders(xlEdgeBottom).LineStyle = xlContinuous
.Range("F3").Borders(xlEdgeLeft).LineStyle = xlContinuous
.Range("F3").Borders(xlEdgeRight).LineStyle = xlContinuous
<pre><code>    .Range("C2") = "請求書"
    .Range("C2").Font.Size = 20
    .Range("B5") = "様"
    .Range("C8") = "月分請求額"
    .Range("G3") = "発行"
    .Range("F13") = "(株) 青山商会 経理部 山口"
    .Range("F14") = "〒333 東京都港区六本木1-1-1"

    '列の幅を指定する
    .Columns("A").ColumnWidth = 30
    .Columns("C").ColumnWidth = 12
    .Columns("D").ColumnWidth = 12
    .Columns("F").ColumnWidth = 12</code></pre>
End With

WS3.Select
'グリッド線を非表示にする
ActiveWindow.DisplayGridlines = False

End Sub

元のデータの作成方法

デスクトップに作成した「確認用マクロのコピー」を開きます。
「開発」→「Visual Basic」でVBEを起動します。

「Module1」をWクリックして、「Module1」のコードウィンドウを表示します。
「Module1」に「サンプル0020」をコピーして貼り付けます。

「請求書データ」のマクロを実行すると、次の3つのデータが入ります。
•Sheet1

•Sheet2

•Sheet3

請求書作成のマクロの作り方

Sheet1とSheet2は請求書のデータです。
Sheet3は、請求書の雛形です。
請求書作成のマクロを実行すると、請求書の雛形をコピーしてデータを入力し、新しくシートを作成します。

■ コード内を「Wクリック」で選択できます。

Sub サンプル0025()
<pre><code>Dim WS1 As Object
Dim WS2 As Object
Dim WS3 As Object

Set WS1 = Worksheets("sheet1")
Set WS2 = Worksheets("sheet2")
Set WS3 = Worksheets("sheet3")

'WS3をコピーして、WS3のあとにワークシートを追加する
WS3.Copy after:=WS3
With ActiveSheet
    'Nameプロパティでシート名を変える
    '「&演算子」で文字列を結合する
    .Name = WS1.Range("B4") & "請求書"

    '「" "」スペースを入れる
    .Range("A5") = WS1.Range("B4") & " " & WS1.Range("C4")
    .Range("B8") = WS2.Range("A1")
    .Range("D8").NumberFormatLocal = "\#,##0;\-#,##0"
    .Range("D8") = WS2.Range("B4")
    .Range("F3") = Date
    .Tab.ColorIndex = 6
End With

WS3.Copy after:=ActiveSheet
With ActiveSheet
    .Name = WS1.Range("B5") & "請求書"
    .Range("A5") = WS1.Range("B5") & " " & WS1.Range("C5")
    .Range("B8") = WS2.Range("A1")
    .Range("D8").NumberFormatLocal = "\#,##0;\-#,##0"
    .Range("D8") = WS2.Range("B5")
    .Range("F3") = Date
    .Tab.ColorIndex = 8
End With

WS3.Copy after:=ActiveSheet
With ActiveSheet
    .Name = WS1.Range("B6") & "請求書"
    .Range("A5") = WS1.Range("B6") & " " & WS1.Range("C6")
    .Range("B8") = WS2.Range("A1")
    .Range("D8").NumberFormatLocal = "\#,##0;\-#,##0"
    .Range("D8") = WS2.Range("B6")
    .Range("F3") = Date
    .Tab.ColorIndex = 4
End With</code></pre>
End Sub

請求書作成のマクロの作り方

「Module2」をWクリックして、「Module2」のコードウィンドウを表示します。
「Module2」に「サンプル0025」をコピーして貼り付けます。

マクロの画面で「請求書作成」を選択して、「実行」をクリックします。

マクロの実行結果は次のようになります。
業者ごとの請求書が作られます。

以上で「請求書を作るマクロ」の説明を終わります。

目次