【VBA】大量のExcelファイルをまとめてPDFに変換するマクロ

この記事を読むのに必要な時間は約 7 分です。

 

「Excelファイル500こをPDF化してね」とか言われたら、気が遠くなっちゃいますよね。

 

私なら10こくらいでギブアップしそうです(笑)

 

こんなメンドクサイ作業こそ、VBAが力を発揮する瞬間!!

 

今回は、指定したフォルダの中にあるExcelファイルを、全部PDFとして保存するマクロを作ります。

スポンサーリンク

VBAで大量のExcelファイルをPDFに変換

この流れで作っていきます。

 

  1. マクロの記録で、ExcelファイルをエクスポートでPDFとして保存するソースコードを記録
  2. Excelファイルを開く部分は、以前作成したGrepマクロを流用
  3. 簡単なテスト

 

流用したGrepマクロの記事はこちらです。

 

マクロの記録でPDF化するソースコードを作成

まずはマクロの記録を使って、ExcelをPDFとしてエクスポートする処理を記録します。

ExcelファイルをPDFで保存

 

開発タブの中にある「マクロの記録」ボタンを押すと、マクロの記録のダイアログが表示されるので、OKをクリック。

ExcelをPDF保存のマクロを記録

 

とりあえずPDFにしてみたいExcelファイルを開きます。

ExcelをPDF保存のマクロを記録

 

ファイルタブの中に、エクスポートの機能があるんです。

ExcelをPDF保存のマクロを記録

 

エクスポートをクリックして、

ExcelをPDF保存のマクロを記録

 

「PDF/XPSの作成」をクリック。

ExcelをPDF保存のマクロを記録

 

出力先のフォルダと、PDFファイルの名前を決めて「発行」です。

ExcelをPDF保存のマクロを記録

 

この通りPDFファイルが保存されました。

ExcelをPDF保存のマクロを記録

 

(キャプチャが無いですが、ここで先ほど開いたExcelファイルを閉じています。)

 

「記録終了」ボタンを押して、マクロの記録を終わらせます。

ExcelをPDF保存のマクロを記録

 

「Visual Basic」ボタンをクリックし、VBのエディターを表示します。

 

通常はAlt + F11でも表示されるんですが、なぜか私のPCだと表示されません・・・。
しかたないので「Visual Basic」をクリックしてます。

ExcelをPDF保存のマクロを記録

 

先ほど記録したソースコードが表示されました。

 

「Excelファイルを開く」操作は記録されていなくて、すでに開いているExcelファイルのシート1つをPDF保存し、Excelファイルを閉じるだけのソースです。

 

この子を改良していきます。

ExcelをPDF保存するVBA

注意したいのが、このオプションです。

 

Trueのままだと、PDF化するたびに全部PDFファイルを表示してしまいます。
Falseにするか消してしまいましょう。

 

流用出来るモノは流用する

コーディングに際して使いまわし出来るモノがありまして、実は以前、ExcelファイルをGrepするマクロを作成しました。

 

特定のフォルダ配下に存在しているExcelファイルを、1つずつ開いて1シートずつキーワードが含まれるセルを検索するもの。

 

これを流用することで、PDF化のマクロがサクッとコーディング出来ました!!

 

※ソースコードは下のほうに貼っておきます

ExcelをPDF保存するVBAのソースコード

特定のフォルダ配下のExcelファイルを全部PDF化

ちょっと動かしてみたいと思います。

 

C4のセルには、PDF化したいExcelファイルが格納されているパス、
C5のセルはPDFを保存するパスです。

 

ExcelをPDF保存するVBAのソースコード

 

試しなので、とりあえずファイル3つだけ置いています。

ExcelをPDF保存するVBAのソースコード

 

こちらは格納先。
まだこのフォルダ直下にPDFファイルは無いです。

ExcelをPDF保存するVBAのソースコード

 

では、「ExcelPDF化」ボタンをポチッと。

 

量が少ないので、10秒もかからず完了しました。

ExcelをPDF保存するVBA

 

先ほどは存在しなかったPDFファイルが格納されています。

ExcelをPDF保存するVBA

 

もともとのExcelファイルはこんな感じ、

ExcelをPDF保存するVBA

 

これがPDFファイルになってます。

ExcelをPDF保存するVBA

 

PDF化のソースコード

こちらがソースコードです。

 

シートのボタン(「ExcelPDF化」のボタン)

 

PDF化の本体

 

少々課題あり

とりあえず作ってみた、やっつけ仕事な感じなので、いくつか課題があったりします。

  • PDFのファイル名は、[Excelファイル名][シート名].pdf
  • ファイル名に、Excelの拡張子が無駄に入る
  • ファイル名の重複は考慮していない
  • パスのチェックもしていない
  • 印刷範囲はあらかじめ整っている想定

 

気を付けて使ってあげればちゃんと動きますが、親切設計ではないんです。

 

この辺り対応すれば、VBAの練習になるかもしれません。

スポンサーリンク

まとめ:VBAで大量のExcelファイルをまとめてPDF化

大量のExcelファイルを一気にPDF保存するVBAの説明でした。

 

Excelファイルの1シートだけPDFにする記事はよく見ますが、まとめてやっちゃうのはあまりなかったので書きました。

 

ご自分の環境に、ソースをコピペしてActiveXのボタンも付ければ動くと思います。

 

最後までお読みいただき、ありがとうございました。