【VBA】エクセル(EXCEL)ファイルをまとめてPDF化する方法

a river that has some ice on it

こんにちわ。たろ(@tarohibi)です。今日は単発で「エクセル(EXCEL)をまとめてPDF化する方法」をお届けします。

いつもお世話になっているもりさんのブログで、WordをPDF化する方法というのが載っていました。

【VBScript】Wordファイルをドラッグアンドドロップして一括PDF作成する|もりさんのプログラミング手帳
WordファイルをドラッグアンドドロップするだけでPDFに変換できるスクリプトの紹介です。複数ファイルも一括処理できます。

「VBScript」のVの字も知らなかったのですが、これ便利だなと思って導入

今まで、Wordの保存→「PDF」を選択→保存後の「PDF」が出てくる→次のWordと延々とループしていたのが、一瞬で済むようになりました。

「これはもしかして・・・エクセルも使えるんじゃね?」という発想から、早速もりさんのコードを元に作成してみることにしました。

完成コード

結果的には完成したのですが、課題も残ったり、つまずいたとこもあったので、まとめてみました。

上記が、完成スクリプトです。

解説

基本的な流れは、もりさんのスクリプトをエクセル形式に変更したものです。

キモは、EXCELオブジェクト作成~Argumentsプロパティ作成までですが、これ自分一人で作成しろと言われたら、『詰み』ますね。

この発想が出ないというか。

ファイルシステムオブジェクトあたりまでは、お作法的な部分があるのですが、Argumentsプロパティなんて考えつきません。

ドラッグ&ドロップで取得したファイルパスを格納なんて・・・めちゃ便利なプロパティがあるもんだと感心してしまいました。

そこからFor-In文でグルグル回して、PDFを作成していくのですが、29行目でつまりました。

PDFフォーマットで出力するメソッドですが、「VBScript」の場合、引数のパラメータ名を書くとエラーがでるみたいです。

「xlTypePDF,pdfFileName,False」この辺の部分です。

残りの課題

スクリプト自体は動くのですが、EXCEL内部でページ範囲していしてやらないと、必要ない箇所までPDF化してしまいます。

VBAの場合、PageSetup オブジェクトを使用すればできるのですが、「VBScript」対象外みたいです。一回設定すれば、範囲を変更しない限り同じPDFが出力されるので、頻繁に印刷範囲を変更しなければ、何とかなりそうです。

まとめ

以上で、「エクセル(EXCEL)をまとめてPDF化する方法」をお届けしました。

もりさんのスクリプトを見よう見まねで作成しました。

半日かかりましたが、半日分以上の省力化ができるので、問題なし!ということで。

オリジナルのスクリプトを作成して頂いたもりさんに感謝して、日々学んでいきたいと思います。

ITVBA
スポンサーリンク
シェアする
たろをフォローする
お金らいふ

コメント

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