
こんにちは、事務系社員のichi3270です。
Wordの差込印刷機能、とても便利ですよね。
私も色々な仕事で活用しまくってます。
でも、たまに諸々の事情で、Excelだけで差し込みしたいことってありませんか?
・・・ということで、Excelで差し込んだPDF帳票を一括出力する方法を考えてみました。
成果物はこんな感じ。

この記事では、このような、PDFに差し込みして一括出力するマクロの作り方を解説します。
帳票をつくる
まずは、差し込み先となる帳票をExcelで作りました。(お試しなので適当ですみません・・・)
シート名は 帳票 とします。


やっぱこういう日本的な帳票はExcelが作りやすいよね~
台帳をつくる
次に、帳票に差し込むためのデータを作ります。
この記事を参考に作ってみる場合は、A列は「管理番号」、B列は「一括印刷フラグ」の列にする必要があります。それ以外の列は、お好きにしていただいてOKです。
また、シート名は 台帳 とします。


この後の工程で、B列のセルに「Y」っていれると一括印刷されるようにする予定~
帳票と台帳をVLOOKUP関数でリンクさせる
次は、台帳のデータを帳票に差し込みできるようにしていきます。
A1・A2セルは、管理番号を入力する欄にします。
ここへ入力した管理番号をもとに、台帳シートのデータを取得して差し込みします。(ここでは、VLOOKUP関数を使用しました)


VLOOKUP関数は基本中の基本かつ、超重要な関数!
わからない人はネットで調べて来てね~(投げやり)
ここまでだけの作業でも、結構便利だよね~。
フォルダ作成 & ファイルをxlsm形式で保存
ここまでできたら、ファイルを保存しましょう。
まずは、「Excel差込印刷」というフォルダを作ります。
そして、そのフォルダ内に「PDF」という名前でフォルダを作ります。
その後、先ほどまでのExcelファイルを、名前をつけて保存で保存します(ファイル名はなんでもいいです)。
ファイルの種類はExcel マクロ有効ブック (*.xlsm)を選択してください。


次の工程でつくるマクロは、PDFフォルダにファイルを出力するマクロだよ~
マクロを作成する
次に、マクロを作っていきます。
・・・といっても、下記の手順どおりにやればOKです。

開発タブが表示されない人は下記の記事を参照~(外部サイト)


Option Explicit Sub 一括PDF出力() ' 変数宣言 Dim ws帳票 As Worksheet: Set ws帳票 = Worksheets("帳票") Dim ws台帳 As Worksheet: Set ws台帳 = Worksheets("台帳") Dim 台帳最終行 As Long: 台帳最終行 = ws台帳.Range("A1").CurrentRegion.Rows.Count Dim i As Long ' 一括出力対象データ数の確認 Dim 出力データ数 As Long: 出力データ数 = 0 For i = 2 To 台帳最終行 If ws台帳.Cells(i, 2).Value = "Y" Then 出力データ数 = 出力データ数 + 1 End If Next ' ユーザーに処理続行の確認 If 出力データ数 > 0 Then Dim rc rc = MsgBox(出力データ数 & "件のデータをPDF出力します。よろしいですか?", vbYesNo) If rc = vbNo Then MsgBox ("処理を中断しました。") Exit Sub End If Else ' 対象データなしの場合は処理終了 MsgBox ("出力対象のデータがありません。") Exit Sub End If ' PDF出力処理 Dim 管理番号 As Long For i = 2 To 台帳最終行 If ws台帳.Cells(i, 2).Value = "Y" Then 管理番号 = ws台帳.Cells(i, 1).Value ws帳票.Cells(2, 1).Value = 管理番号 ws帳票.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=ThisWorkbook.Path & "\PDF\" & 管理番号 & ".pdf" End If Next ' 完了メッセージの表示 MsgBox (ThisWorkbook.Path & "\PDF" & " にPDFファイルを出力しました。") End Sub
一括出力ボタンをつくる
最後に、一括出力用のボタンを追加します。
これも、下図のとおり作業すればOKです。





これでボタンが追加できました。
あとは、最初の見本動画のとおり、使ってみるだけです。

解説は以上です~。
最後まで見て頂いてありがとうございました~!
コメント