請求書を作るマクロ

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

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

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

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

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

元になるデータの準備

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

Sub サンプル0020()

    '変数の宣言
    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
      
  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
        
        .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
  End With
   
  WS3.Select
 'グリッド線を非表示にする
  ActiveWindow.DisplayGridlines = False
   
End Sub

元のデータの作成方法

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

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

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

•Sheet2

•Sheet3

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

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

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

Sub サンプル0025()
 
    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
End Sub

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

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

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

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

販売実績表をマクロで作るについては次の記事が参考になります。
■関連記事■ 販売実績表をマクロで作る

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