取引業者の名簿と業者ごとの請求金額の一覧表から、請求書を作るマクロの説明をします。
請求書の様式にデータを組み込んで、請求書を作るマクロです。
ワークシートSheet1→請求書送付先
ワークシートSheet2→請求額合計
ワークシートSheet3→請求書作成
ワークシート全体をコピーして、ブックに新しいワークシートを追加します。
複数の文字列を、文字列演算子で1つにまとめる方法を説明します。
日付を取得する関数を使って、請求書に日付を埋め込みます。
目次
元になるデータの準備
■ コード内を「Wクリック」で選択できます。[code] 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 [/code]
元のデータの作成方法
1.デスクトップに作成した「確認用マクロのコピー」を開きます。
「開発」→「Visual Basic」でVBEを起動します。
2.「Module1」をWクリックして、「Module1」のコードウィンドウを表示します。
「Module1」に「サンプル0020」をコピーして貼り付けます。
3.「請求書データ」のマクロを実行すると、次の3つのデータが入ります。
•Sheet1
•Sheet2
•Sheet3
請求書作成のマクロの作り方
Sheet1とSheet2は請求書のデータです。
Sheet3は、請求書の雛形です。
請求書作成のマクロを実行すると、請求書の雛形をコピーしてデータを入力し、新しくシートを作成します。
[code] 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 [/code]
請求書作成のマクロの作り方
1.「Module2」をWクリックして、「Module2」のコードウィンドウを表示します。
「Module2」に「サンプル0025」をコピーして貼り付けます。
2.マクロの画面で「請求書作成」を選択して、「実行」をクリックします。
3.マクロの実行結果は次のようになります。
業者ごとの請求書が作られます。