ひとつのExcelブックにある各ワークシートを個別のPDFにするならマクロを使おう

ExcelからPDF

ひとつのExcelブックにあるワークシートを、ワークシートごとに個別のPDFに変換したいときはありませんか?

ワークシートの数が少なければそれほど手間ではないですが、たくさんのワークシートがある場合、ひとつひとつファイル名も入力しないといけないし大変な手間ですよね。

そんなときマクロを使えば、一瞬でPDFファイルが作成でき、しかもファイル名も自動でつけてくれます。

スポンサーリンク

目次

マクロを書く準備

マクロを書くためには、まず”開発タブ”を表示させましょう。

作業するExcelのブックを開いて、左上の”ファイル”→”オプション”から”Excelのオプション”ウィンドウを表示し、”リボンのユーザー設定”から”開発”にチェックを入れて、OKボタンをクリックします。
Excelオプション

するとリボンに”開発タブ”が表示されます。
Excel開発タブ

次にマクロのセキュリティを設定します。
Excelのマクロセキュリティ

”警告を表示してすべてのマクロを無効にする”に設定します。
Excelマクロのセキュリティ

次はAltキーとF11キーを同時に押してVBE(Visual Basic Editor)を起動します。
ExcelのVBE

”ツール”→”オプション”から
ExcelのVBE

次のように設定します。
ExcelのVBE

次は、AltIMと順番に押してモジュールを作成します。
VBEのモジュール

このモジュールにマクロを書いていきます。

ワークシートごとにPDFに変換するマクロ

基本構文

ワークシートをPDFに変換する基本の構文は次のようになります。

Sub マクロの名前()

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & “¥” &  ”ファイル名”, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

コピペする場合、¥は全角になっていますが半角の¥にすることと、半角のスペースにご注意ください。
また、そのままコピペしてもエラーが出ますので、貼り付けたあと、この後に出てくる画像のようになるように微調整をお願いします。
コピペで使えるように調査中です。スミマセン^^;

項 目 説 明
ActiveSheet 現在開いているワークシートのこと
Filename PDFの保存場所と名前です。
この例の場合、マクロが保存されているブックと同じフォルダにPDFが保存されます。
Quality ファイルの品質です。
この例の場合は標準です。
IncludeDocProperties True…プロパティを設定
False…プロパティを省略
IgnorePrintAreas True…設定された印刷領域を無視
False…設定された印刷領域を無視しない
OpenAfterPublish True…マクロ実行後PDFが表示される
False…マクロ実行後PDFが表示されない

ワークシートごとにPDFにする場合

基本構文のままだと、アクティブにしているワークシートしかPDFにならないので、次のように書きます。

Sub ワークシートごとにPDFに変換()

Dim i As Long
For i = 1 To Worksheets.Count

Worksheets(i).ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & “¥” & _
Worksheets(i).Name, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

Next i

End Sub

コピペする場合、¥は全角になっていますが半角の¥にすることと、半角のスペースにご注意ください。
また、そのままコピペしてもエラーが出ますので、貼り付けたあと、この後に出てくる画像のようになるように微調整をお願いします。
コピペで使えるように調査中です。スミマセン^^;

”Dim i”とは「”i”は数字が変わる変数です」という意味です。

”i”には1からWorksheets.Count、つまりワークシートの数までの数字が入ることになります。

”For i〜Next i”は、For〜Nextまでの間の処理をiの数だけ繰り返すという意味です。

そして、「Filename:=ThisWorkbook.Path & “¥” & _ Worksheets(i).Name」でワークシートの名前がPDFのファイル名になるようにしています。

実際にVBEにマクロを書くとこんな感じになります。
ExcelのVBE

実際にやってみましょう

Sheet1からSheet3まであるExcelブックを例に説明します。
開発タブにある”マクロ”をクリックします。
Excelブック

マクロウィンドウが開きますので、先程作ったマクロを選択して”実行”します。
マクロウィンドウ

するとPDFのウィンドウが開いて、PDFが作成されたことが確認できます。
PDF

マクロが保存されているBook1.xlsxと同じフォルダであるデスクトップにSheet1からSheet3までのPDFファイルが作成されています。
デスクトップ

マクロが入ったExcelブックの保存

マクロが保存されているExcelブックは、通常の保存形式と変わります。

拡張子が”.xlsm”のExcelマクロ有効ブックの形式で保存します。
Excelマクロ有効ブック

まとめ

私は今回紹介したマクロを、請求書を作成するときに使っています。

請求内容を入力したExcelのテーブル(いわばデータベースですね)から今回のマクロとは別のマクロ(いずれ記事にします)使って、相手先ごとにExcelで請求書を作成し、そのExcelの請求書を今回のマクロで、個別のPDFとして保存しています。

個別のPDFで保存するのは、メールに添付して送るためです。

メールで送るため、ファイル名を相手先ごとにひとつひとつ付けていく必要があるので、マクロを使わないとかなり面倒です。

こういう同じ作業を繰り返し繰り返しする必要があるときは、マクロの出番なのです。

◆編集後記◆
私もまだ、マクロを何もないところから組める程の技量はありませので、他の人が作ったサンプルをベースに、自分なりに解読して、自分用にカスタマイズして使っています。
マクロを覚えるには、こういったやり方がけっこう近道だったりします。

この記事が気に入ったら
いいね ! しよう

Twitter で
The following two tabs change content below.
アバター画像

山端一弥

大阪市阿倍野区の税理士です。 税理士事務所での10年間の修行を経て独立開業しました。 このブログは税務・会計・IT・趣味などについて「少しでも誰かの役に立てれば」という思いで書いています。 詳しいプロフィールはこちら