2012
2
03

ExcelVBAによるExcelからPDFへの変換

Excelでいろいろ集計してグラフとかにまでするんだけど、最終的にはPDFにしたい、っていうことが結構ありました。かなり試行錯誤したんですが、今までに行き着いた結果を書き残しておこうと思います。


やりたいこと

  • Excel→PDFに変換して任意のフォルダに名前をつけて保存したい
  • 会社のPCなのでむやみにソフトはインストールしたくない
  • 同じブック内の全シートを連続してPDF化したい

Acrobat Professional版がインストールされている場合ならば、付属のAcrobat Distillerを使うと一発でできるみたいなんですが、使いたいPC全てにProfessional版が入ってるのは難しいことですので、StandardやReaderなどがインストールされており、「PDFを印刷できるプリンタ」が存在していれば動くのがいいなー、と思って作ったものです。

ご注意

Excel2003だったときに作ったコードなのでだいぶ古いです。2010以降なら ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ファイル名 とかでもっとかんたんにできるみたいなので、こんなまどろっこしいことしなくていいです!

こちらに書きました。

下準備

  1. 「プリンタとFAX」より「Adobe PDF」(インストールしたソフトにより名前が違う可能性があります)のプロパティを開く
  2. 「詳細設定」タブ→「標準の設定」をクリック
  3. 「保存先フォルダ」をデスクトップへ設定する ※1
  4. 「結果のAdobe PDFを表示」のチェックを外す ※2
  5.  

※1 どこでもいいですが、デスクトップが一番わかりやすいかと。
※2 表示されると移動できなくなっちゃうのです

解説

このプログラムは、デフォルトプリンタからPDFプリンタへ切り替えを行い、(00~99まで切り替わるまで試すのでPCごとに番号が違ってもOK)いったんデスクトップへできた“Excelブック名.pdf”のままのPDFファイルを“各シート名.pdf”につけ直して任意のフォルダに移動するというものです。

出力先を直接任意フォルダに指定しても良いのですが、別の用途でPDF印刷を行う時に、全てそのフォルダへ入ってしまいます。複数人でPCを使う可能性がある場合、どこへ出力されたのかわからなくなってしまうため、一番目に入りやすいデスクトップ上に一旦出力する、という方法をとっています。

※3 必ず※1で指定した場所と同じにしてください
※4 ここでは仮としてCドライブ直下にしてますが、お好きなフォルダへどうぞ
※5 PDFファイルが出来るまでタイムラグがあるので少し待ちます

どうも、PCによってプリンタ設定の文字列に微妙に違いがあるみたいで、確認できるだけでは「“プリンタ名”on NeXX:」「NeXX: の “プリンタ名”」というのがあったので、15~16行目にてその2つに関しては対応しています。もしも形式が違ってうまくいかなかった場合は、

120203-1

一旦12行目にプレイクポイントを設置して上の実行ボタンを押してみて下さい。

120203-2

10行目のoldprnにマウスを載せると取得したデフォルトのプリンタが見れますので、そこの文字列を確認して15,6行目に倣い、その形式の数値の部分をFormat(i, "00")へ、プリンタ名部分をs_prnに変更したものを17行目に入れてみてください。

これを組むにあたって、いろんなサイトのいろんな方のコードを参考にさせていただいて、本来ならここで参考URLを貼りたかったのですが、試行錯誤しすぎて、当時きちんとメモっておかなかったので分からなくなってしまい…大変申し訳ありません。この場にて、厚く厚く御礼申し上げます。

  • このエントリーをはてなブックマークに追加
  • follow us in feedly 651
  • RSSを登録

公開日:2012/02/03
更新日:2014/01/06


コメントを残す




*印は必須項目です。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にですがスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)


back to top