大体でIT
大体でIT
2022/8/19
Excel VBAを使って、差し込み印刷を自動化するには、VLOOKUP関数を使ってリストから値を取得して、Excel VBAで「PrintOut」をループすることでできます。差し込み印刷するリストが大量になってくるとかなり手間となりますので、Excel VBAを使って自動化していきましょう。
この記事では、差し込み印刷を自動化する方法について、ご紹介します。
差し込み印刷は、あらかじめ作成したフォームの中に、リストから値を入力して、印刷する方法になります。
手順としては、VLOOKUP関数を使ってリストから値を取得して、Excel VBAを使って「PrintOut」をループするとできます。
印刷するリストが大量になってくるとかなり手間ですので、Excel VBAを使って自動化していきましょう。
では、差し込み印刷を自動化する方法について、解説していきます。
Excel VBAとVLOOKUP関数を使って、差し込み印刷を自動化する方法をマスターできます。
VBAコードの作成手順について、動画で確認できます。
VIDEO
やりたい内容は、差し込み印刷を自動化したい、ということになります。
差し込み印刷を自動化したい
次のフォームにリストから値を入力して、印刷したいです。
あらかじめ用意した次のリストを、フォームに差し込んで印刷していきます。
VBAコードを実行すると、1つ目の請求書を印刷することができます。
1つ目の請求書を印刷
1つ目の取引先を入力して、リストから値を取得します。
2つ目の請求書を印刷
2つ目の取引先を入力して、リストから値を取得します。
3つ目の請求書を印刷
3つ目の取引先を入力して、リストから値を取得します。
解説する内容では、「印刷プレビュー」にて確認してますけども、実際に「印刷」することもできます。
VLOOKUP関数とVBAコードを作成していきます。
請求書フォームを作成
作成した請求書フォームに、リストから値を取得していきます。
VLOOKUP関数とほかの数式を使って、リストから値を取得していきます。
数式を使ってリストから値を取得
まずは、VLOOKUP関数でリストから「取引先」で検索して、「品目」と「単価」、「数量」を取得していきます。
VLOOKUP関数でリストから取得
VLOOKUP関数で、「取引先」を検索して「品目」を取得します。
VLOOKUP関数で、「取引先」を検索して「単価」を取得します。
VLOOKUP関数で、「取引先」を検索して「数量」を取得します。
次は、数式を入力して「金額」と「合計」、「ご請求金額」を取得します。
数式を入力して計算する
「金額」は、「単価」と「数量」をかけて算出します。
参照した作業セルを非表示
これで、「取引先」を検索して、リストから値を取得できます。
「取引先」を検索してリストから値を取得できる
「取引先」を検索して、リストから値を取得できました。
次は、Excel VBAを使って、Forを使って「取引先」を入力して、「PrintOut」で印刷してきます。
Sub TEST1()
For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
'取引先を転記
Sheets("請求書").Range("A3") = Sheets("DB").Range("A" & i)
'印刷する
Sheets("請求書").PrintOut preview:=True
Next
End Sub
確認するために「印刷プレビュー」にて確認しています。
実際に印刷したいという場合は、「.PrintOut」の引数である「preview:=True」を削除するといいです。
実行すると、まずは、1つ目の請求書が印刷されます。
1つ目の請求書を印刷
1つ目の取引先が入力されて、リストから値を取得できます。
2つ目の請求書を印刷
2つ目の取引先が入力されて、リストから値を取得できます。
3つ目の請求書を印刷
3つ目の取引先が入力されて、リストから値を取得できます。
こんな感じで、Excel VBAを使って、差し込み印刷を自動化することができます。
印刷をループする場合に、いくつか問題点があります。
印刷時にIDを入力する必要がある
プリンターで印刷物を選択して印刷するタイプ
印刷する環境によって、「PrintOut」をループする方法が使えない場合があります。
対策としては、「請求書を複数シートに作成して、複数シートを一括で印刷する」方法になります。
取引先ごとに請求書を作成して、複数シートの請求書を一括で印刷するには、次のような手順になります。
取引先を格納する配列を作成
取引先を入力して請求書を作成
作成した請求書を別シートにコピー
コピーした請求書のシート名を取引先に変更
取引先を配列に格納
複数シートを一括で印刷
作成した複数シートを削除
Sub TEST2()
Dim A
'配列の大きさを設定
ReDim A(1 To Sheets("DB").Range("A1").CurrentRegion.Rows.Count - 1)
j = 0
For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
'取引先を転記
Sheets("請求書").Range("A3") = Sheets("DB").Range("A" & i)
'請求書を最終シートの後にコピー
Sheets("請求書").Copy after:=Sheets(Sheets.Count)
'シート名を変更
ActiveSheet.Name = Sheets("DB").Range("A" & i)
j = j + 1 'カウントアップ
'配列に取引先を入力
A(j) = Sheets("DB").Range("A" & i)
Next
'複数シートを、一括で印刷する
Sheets(A).PrintOut preview:=True
Application.DisplayAlerts = False
Sheets(A).Delete '作成したシートを削除
Application.DisplayAlerts = True
End Sub
実行すると、複数シートに、取引先ごとに請求書を作成できます。
複数シートに請求書を作成
さらに実行すると、作成した請求書を一括で印刷することができます。
一括で印刷できる
こんな感じで、複数の請求書を一括で印刷することができます。
最後に作成したシートは削除
「PrintOut」をループする方法が使えない場合は、複数の請求書を作成して一括で印刷する方法を試してみるといいです。
この記事では、差し込み印刷を自動化する方法について、ご紹介しました。
差し込み印刷は、あらかじめ作成したフォームの中に、リストから値を入力して、印刷する方法になります。
手順としては、VLOOKUP関数を使ってリストから値を取得して、Excel VBAを使って「PrintOut」をループするとできます。
印刷するリストが大量になってくるとかなり手間ですので、Excel VBAを使って自動化していきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。