この記事では、EXCELに入力している情報から差込PDFを作成する方法について説明します。
しかも、入力している情報から「選択した行のみ」を対象として、差込PDFを作成します。
差込PDFとは、年賀状の宛名書きをイメージしてもらえるとわかりやすいです。
決まったレイアウト(はがき)に送りたい人それぞれの郵便番号、住所、氏名を書き込みます。
そして、紙に印刷するのではなく、1枚ずつをPDFファイルとして保存可能です。
PDFの便利なところは、印刷物とは違い、メールで相手に送ることができます。
また、PDFファイルなので、受け取った相手は変更することができません。
この差込PDFを作成するには、以下の3つを用意する必要があります。
- 差込PDFする人の情報一覧
- 決まったレイアウト
- VBA(差込PDFを作成する機能を作成する必要があります。)
それでは、EXCELで差込PDF(選択した行のみ)を作成していきましょう。
困っている女性
困っている女性
解決する男性
困っている女性
◆ほかの差込PDFの記事は、以下から参照してください。
◆EXCEL差込印刷の記事は、以下から参照してください。
差込PDFに必要なものを、1つ1つ順番に説明していきます。
もくじ
1.差込PDFする人の情報一覧を準備する
今回はサンプルとして、「従業員番号」、「氏名」、「生年月日」の3つのデータを利用して差込PDFを作成する方法を説明します。
「差込データ一覧」シートを作成する
差込データ一覧シートを用意する
- 「差込データ一覧」という名前のシートを作成します。
- 1行目に「従業員番号」、「氏名」、「生年月日」、「選択」のタイトル行を作成する
- 2行目以降には、実際に差込PDFを作成したいデータを入力します。
- 差込PDF作成したい対象データ行の「選択」に1を入力します。(1でなくても、○でもOKです。)
2.決まったレイアウトを準備する
今回はサンプルとして、「従業員番号」、「氏名」、「生年月日」を差し込むレイアウトを作成しました。
「ひな形」シートを作成する
差込PDFレイアウトを作成する
- 「ひな形」という名前のシートを作成します。
- 5行目にタイトル行を作成します。今回のサンプルでは、「従業員番号」、「氏名」、「生年月日」になります。
- 6行目には、差込する値を表示する欄を用意します。
※レイアウトは、好きにアレンジしても良いですが、後ほど説明するVBAも変更する必要があります。
3.VBAで差込PDFを作成する機能を記入する
「Microsoft Visual Basic for Applications」を起動します。
標準モジュールを追加する
標準モジュールを追加して、以下のソースを書きます。
'メイン処理
Public Sub MainProc()
Dim nowRow As Integer
nowRow = 1
With ThisWorkbook.Sheets("差込データ一覧")
Do While True
'①現在行を次の行に変更する
nowRow = nowRow + 1
'②従業員番号が空なら、ループを抜ける
If .Range("A" & nowRow) = "" Then Exit Do
'③選択に値が入力されていれば、差込PDFを作成する
If .Range("D" & nowRow) <> "" Then
'④必要なデータをひな形に入力する
ThisWorkbook.Sheets("ひな形").Range("B6") = .Range("A" & nowRow) '従業員番号
ThisWorkbook.Sheets("ひな形").Range("C6") = .Range("B" & nowRow) '氏名
ThisWorkbook.Sheets("ひな形").Range("D6") = .Range("C" & nowRow) '生年月日
'⑤ひな形シートでPDFを作成する(作成PDFファイル名を指定する)
Call CreatePdfFile("D:\200_work\100_PDF\" & .Range("A" & nowRow) & ".pdf")
End If
Loop
End With
MsgBox "完了"
End Sub
'指定されたファイル名でPDFを作成する
Public Sub CreatePdfFile(ByVal strFilePath As String)
ThisWorkbook.Sheets("ひな形").ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=strFilePath, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub
最後にEXCELを「◯◯◯.xlsm」というような感じでマクロ有効ブック形式で保存します。
4.差込PDFの動かし方
それでは、差込PDFの動かし方を説明します。
マクロを起動する
「開発」タブの「マクロ」をクリックします。
実行ボタンをクリックする
先程作成した自作関数「MainProc」が一覧に表示されていますので、選択します。
次に、「実行」ボタンをクリックして差込PDFを実行します。
しばらく待つと、選択に1を入力した行を対象に、PDFファイルが3つ作成されます。
差込PDFが3つ作成された
うまく動きましたか?
次は、あなたの好きなレイアウトで、好きな情報を用意して、差込PDFを作成してみましょう。
5.差込PDFのVBAプログラムの説明
それでは、差込レイアウトや表示させたい情報を変更できるようになるため、VBAプログラムを説明します。
'メイン処理
Public Sub MainProc()
Dim nowRow As Integer
nowRow = 1
With ThisWorkbook.Sheets("差込データ一覧")
Do While True
'①現在行を次の行に変更する
nowRow = nowRow + 1
'②従業員番号が空なら、ループを抜ける
If .Range("A" & nowRow) = "" Then Exit Do
'③選択に値が入力されていれば、差込PDFを作成する
If .Range("D" & nowRow) <> "" Then
'④必要なデータをひな形に入力する
ThisWorkbook.Sheets("ひな形").Range("B6") = .Range("A" & nowRow) '従業員番号
ThisWorkbook.Sheets("ひな形").Range("C6") = .Range("B" & nowRow) '氏名
ThisWorkbook.Sheets("ひな形").Range("D6") = .Range("C" & nowRow) '生年月日
'⑤ひな形シートでPDFを作成する(作成PDFファイル名を指定する)
Call CreatePdfFile("D:\200_work\100_PDF\" & .Range("A" & nowRow) & ".pdf")
End If
Loop
End With
MsgBox "完了"
End Sub
①現在行を次の行に変更する
ここでは、現在行を次の行に変更するため、変数「nowRow」に格納している値+1を、変数「nowRow」に格納しています。
ループ処理の外側で、変数「nowRow」には1が格納されています。
差込データは、2行目から入力されているので、ループ処理の内側に入ったときに変数「nowRow」を+1して、2を格納します。
もちろん、ループしてくると、さらに+1されて3が格納されます。
というように、対象行を2行目から順番に処理することになります。
②従業員番号が空なら、ループを抜ける
ここでは、A列(従業員番号)の対象行に値が入力されているかチェックしています。
変数「nowRow」に2が格納されている場合、セルA2に値が入力されているかチェックします。
従業員番号が入力されていない行が見つかると、差込PDF作成処理を終了します。
③選択に値が入力されていれば、差込PDFを作成する
ここでは、D列(選択)の対象行に値が入力されているかチェックしています。
変数「nowRow」に2が格納されている場合、セルD2に値が入力されているかチェックします。
選択が入力されている場合、差込PDFを作成する処理を行います。
選択が入力されていない場合、次の行に処理が移ります。
④必要なデータをひな形に入力する
ここでは、「ひな形」シートの各セルに、「差込データ一覧」シートの該当行の値をセットしています。
具体的には、「ひな形」シートのB6セル(従業員番号)に、「差込データ一覧」シートのA列(従業員番号)の対象行の値をセットします。
次に、「ひな形」シートのC6セル(氏名)に、「差込データ一覧」シートのB列(氏名)の対象行の値をセットします。
最後に、「ひな形」シートのD6セル(生年月日)に、「差込データ一覧」シートのC列(生年月日)の対象行の値をセットします。
ひな形シートのレイアウトを変更したい場合、上記のセル番地を変更したセル番地に変更する必要があります。
⑤ひな形シートでPDFを作成する(作成PDFファイル名を指定する)
ここでは、「ひな形」シートに入力された値で、PDFファイルを作成しています。
ここで指定しているフォルダパスは、好きなフォルダパスに変更してください。
ちなみに、PDFファイル名は、「差込データ一覧」のA列(従業員番号)の値になります。
以上です。
最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

