大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAを使って、差し込み印刷を自動化するには、VLOOKUP関数を使ってリストから値を取得して、Excel VBAで「PrintOut」をループすることでできます。差し込み印刷するリストが大量になってくるとかなり手間となりますので、Excel VBAを使って自動化していきましょう。

はじめに

この記事では、差し込み印刷を自動化する方法について、ご紹介します。

差し込み印刷は、あらかじめ作成したフォームの中に、リストから値を入力して、印刷する方法になります。

手順としては、VLOOKUP関数を使ってリストから値を取得して、Excel VBAを使って「PrintOut」をループするとできます。

印刷するリストが大量になってくるとかなり手間ですので、Excel VBAを使って自動化していきましょう。

では、差し込み印刷を自動化する方法について、解説していきます。

この記事を読むメリット

  • Excel VBAとVLOOKUP関数を使って、差し込み印刷を自動化する方法をマスターできます。

本記事の内容を動画にて解説しております。

本記事の内容を動画にて解説しております。

VBAコードの作成手順について、動画で確認できます。

目次から見たい項目へ移動すると便利ですよ。

目次

差し込み印刷を自動化したい

差し込み印刷を自動化してみます。

やりたい内容

やりたい内容は、差し込み印刷を自動化したい、ということになります。

差し込み印刷を自動化したい

次のフォームにリストから値を入力して、印刷したいです。

差し込み印刷を自動化したいです

あらかじめ用意した次のリストを、フォームに差し込んで印刷していきます。

あらかじめ用意したリストを、フォームに差し込んで印刷していきます

VBAコードを実行すると、1つ目の請求書を印刷することができます。

1つ目の請求書を印刷

1つ目の取引先を入力して、リストから値を取得します。

1つ目の取引先を入力して、リストから値を取得します

1つ目の取引先の請求書が印刷されます。

1つ目の取引先の請求書が印刷されます

次は、2つ目の請求書が印刷されます。

2つ目の請求書を印刷

2つ目の取引先を入力して、リストから値を取得します。

2つ目の取引先を入力して、リストから値を取得します

2つ目の取引先の請求書が印刷されます。

2つ目の取引先の請求書が印刷されます

最後に、3つ目の請求書を印刷することができます。

3つ目の請求書を印刷

3つ目の取引先を入力して、リストから値を取得します。

3つ目の取引先を入力して、リストから値を取得します

3つ目の取引先の請求書が印刷されます。

3つ目の取引先の請求書が印刷されます

解説する内容では、「印刷プレビュー」にて確認してますけども、実際に「印刷」することもできます。

では、実際に作成していきます。

VLOOKUP関数とVBAコードを作成

VLOOKUP関数とVBAコードを作成していきます。

フォームを作成

まずは、請求書のフォームを作成しておきます。

請求書フォームを作成

請求書のフォームを作成しておきます

作成した請求書フォームに、リストから値を取得していきます。

VLOOKUP関数で値を取得

VLOOKUP関数とほかの数式を使って、リストから値を取得していきます。

数式を使ってリストから値を取得

VLOOKUP関数とほかの数式を入力して、取引先を検索して値を取得していきます

まずは、VLOOKUP関数でリストから「取引先」で検索して、「品目」と「単価」、「数量」を取得していきます。

VLOOKUP関数でリストから取得

VLOOKUP関数で、「取引先」を検索して「品目」を取得します。

VLOOKUP関数で、「取引先」を検索して「品目」を取得します

VLOOKUP関数で、「取引先」を検索して「単価」を取得します。

VLOOKUP関数で、「取引先」を検索して「単価」を取得します

VLOOKUP関数で、「取引先」を検索して「数量」を取得します。

VLOOKUP関数で、「取引先」を検索して「数量」を取得します

次は、数式を入力して「金額」と「合計」、「ご請求金額」を取得します。

数式を入力して計算する

「金額」は、「単価」と「数量」をかけて算出します。

「金額」は、「単価」と「数量」をかけて算出します

「合計」は、「金額」の合計値を算出します。

「合計」は、「金額」の合計値を算出します

「ご請求金額」は、「合計」を参照します。

「ご請求金額」は、「合計」を参照します

参照した作業セルは非表示にしておきます。

参照した作業セルを非表示

「取引先」を検索して、リストから値を取得できます

これで、「取引先」を検索して、リストから値を取得できます。

「取引先」を検索してリストから値を取得できる

「取引先」を検索して、リストから値を取得できます

「取引先」を検索して、リストから値を取得できました。

PrintOutをForでループする

次は、Excel VBAを使って、Forを使って「取引先」を入力して、「PrintOut」で印刷してきます。

印刷するVBAコードは、次のようになります。

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つ目の取引先が入力されて、リストから値を取得できます。

1つ目の取引先が入力されて、リストから値を取得できます

請求書を印刷できます。

請求書を印刷できます

請求書を印刷できました。

次は、2つ目の請求書が印刷されます。

2つ目の請求書を印刷

2つ目の取引先が入力されて、リストから値を取得できます。

2つ目の取引先が入力されて、リストから値を取得できます

請求書を印刷できます。

請求書を印刷できます

請求書を印刷できました。

最後に、3つ目の請求書が印刷されます。

3つ目の請求書を印刷

3つ目の取引先が入力されて、リストから値を取得できます。

3つ目の取引先が入力されて、リストから値を取得できます

請求書を印刷できます。

請求書を印刷できます

請求書を印刷できました。

こんな感じで、Excel VBAを使って、差し込み印刷を自動化することができます。

印刷する際の問題点と対策

印刷をループする場合に、いくつか問題点があります。

印刷する際の問題点と対策

印刷する際の問題点は、次のようになります。

  • 印刷時にIDを入力する必要がある
  • プリンターで印刷物を選択して印刷するタイプ

印刷する環境によって、「PrintOut」をループする方法が使えない場合があります。

対策としては、「請求書を複数シートに作成して、複数シートを一括で印刷する」方法になります。

では、VBAコードを作成していきます。

複数シートを一括で印刷する

取引先ごとに請求書を作成して、複数シートの請求書を一括で印刷するには、次のような手順になります。

  • 取引先を格納する配列を作成
  • 取引先を入力して請求書を作成
  • 作成した請求書を別シートにコピー
  • コピーした請求書のシート名を取引先に変更
  • 取引先を配列に格納
  • 複数シートを一括で印刷
  • 作成した複数シートを削除

VBAコードは、次のようになります。

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

実行すると、複数シートに、取引先ごとに請求書を作成できます。

複数シートに請求書を作成

複数シートに、取引先ごとに請求書を作成できます

さらに実行すると、作成した請求書を一括で印刷することができます。

一括で印刷できる

1ページ目の請求書です。

複数シートの請求書を一括で印刷することができます

2ページ目の請求書です。

複数シートの請求書を一括で印刷することができます

3ページ目の請求書です。

複数シートの請求書を一括で印刷することができます

こんな感じで、複数の請求書を一括で印刷することができます。

最後に作成した複数シートは削除されます。

最後に作成したシートは削除

最後に作成した複数シートは削除されます

「PrintOut」をループする方法が使えない場合は、複数の請求書を作成して一括で印刷する方法を試してみるといいです。

おわりに

この記事では、差し込み印刷を自動化する方法について、ご紹介しました。

差し込み印刷は、あらかじめ作成したフォームの中に、リストから値を入力して、印刷する方法になります。

手順としては、VLOOKUP関数を使ってリストから値を取得して、Excel VBAを使って「PrintOut」をループするとできます。

印刷するリストが大量になってくるとかなり手間ですので、Excel VBAを使って自動化していきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す