Excelマクロで差し込み印刷してPDFを連続出力する

アイキャッチ画像

こんにちは、事務系社員のichi3270です。

Wordの差込印刷機能、とても便利ですよね。
私も色々な仕事で活用しまくってます。

でも、たまに諸々の事情で、Excelだけで差し込みしたいことってありませんか?

  • 帳票のデザインが複雑でWordだと面倒な時
  • 関数で表のデザインを変えたいとき ・・・など

・・・ということで、Excelで差し込んだPDF帳票を一括出力する方法を考えてみました。

成果物はこんな感じ。

この記事では、このような、PDFに差し込みして一括出力するマクロの作り方を解説します。

帳票をつくる

まずは、差し込み先となる帳票をExcelで作りました。(お試しなので適当ですみません・・・)

シート名は 帳票 とします。

帳票の見本

やっぱこういう日本的な帳票はExcelが作りやすいよね~

台帳をつくる

次に、帳票に差し込むためのデータを作ります。

この記事を参考に作ってみる場合は、A列は「管理番号」B列は「一括印刷フラグ」の列にする必要があります。それ以外の列は、お好きにしていただいてOKです。

また、シート名は 台帳 とします。

台帳の見本

この後の工程で、B列のセルに「Y」っていれると一括印刷されるようにする予定~

帳票と台帳をVLOOKUP関数でリンクさせる

次は、台帳のデータを帳票に差し込みできるようにしていきます。

A1・A2セルは、管理番号を入力する欄にします。

ここへ入力した管理番号をもとに、台帳シートのデータを取得して差し込みします。(ここでは、VLOOKUP関数を使用しました)

帳票に値を差し込む

VLOOKUP関数は基本中の基本かつ、超重要な関数!
わからない人はネットで調べて来てね~(投げやり)

ここまでだけの作業でも、結構便利だよね~。

フォルダ作成 & ファイルをxlsm形式で保存

ここまでできたら、ファイルを保存しましょう。

まずは、「Excel差込印刷」というフォルダを作ります。
そして、そのフォルダ内に「PDF」という名前でフォルダを作ります。

その後、先ほどまでのExcelファイルを、名前をつけて保存で保存します(ファイル名はなんでもいいです)。
ファイルの種類はExcel マクロ有効ブック (*.xlsm)を選択してください。

フォルダ構成

次の工程でつくるマクロは、PDFフォルダにファイルを出力するマクロだよ~

マクロを作成する

次に、マクロを作っていきます。
・・・といっても、下記の手順どおりにやればOKです。

Visual Basic エディターを起動
開発タブ → Visual Basic

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

Word/Excel:開発タブを表示するには - 教えて!HELPDESK
「開発」タブはデフォルトでは非表示となっています。表示させるには次の操作を行います。
標準モジュールを挿入
右クリック → 挿入 → 標準モジュール
コードを貼り付ける
エディタに、下記のコードをそのまま貼り付けてください
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です。

ボタンの挿入
開発 → 挿入 → ボタン
ボタンを配置したい場所をクリックすると「マクロの登録」画面が表示されるので「一括PDF出力」を選ぶ
ボタンが挿入される
ボタンを右クリック → テキストの編集
PDF一括出力 というラベルにしました

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

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

コメント

タイトルとURLをコピーしました