VBAでPDFで保存する方法・見た目を調整するコツを解説!


VBAでExcelをPDF化して保存する方法がわからない・・・
具体的な方法だけでなくサンプルコードも知りたいな・・・

日常的にExcelを触っていると、ExcelシートをPDF化してレポート出力するケースはよくありますよね。数件であれば手作業でも済みますが、時期によって数十件、数百件と数が多くなってくると・・・とても大変ですよね。VBAを使って自動化したいけど具体的な方法がわからないという方も多いのではないでしょうか。

こんにちは!フリーランスエンジニア兼テックライターのワキザカです。

この記事では、VBAでExcelシートをPDF化して保存する方法を解説します!

また、ただPDF化して保存する方法だけでなく、PDF化するときのサイズや余白を微調整する方法も解説しているので、ぜひ最後まで見てみてくださいね。

この記事はこんな人のために書きました。

  • VBAでExcelシートのデータをPDF保存する処理を作りたいと思っている人
  • ExcelシートをPDF化する作業を自動化したい人

VBAでPDF保存する方法とは?

はじめに、VBAでPDF保存する方法について解説します。

VBAでPDF保存する方法は、次のとおりです。

VBAでPDF保存する方法:

これだけだとわかりづらいので、具体的なサンプルをもとに解説しますね。以下はC:\Users\Samurai\Desktop\PDF出力\に請求書.pdfの名前で、PDFを保存するサンプルです。

サンプルコード:

実行結果:

実行結果

ファイル名、フォルダパス、ファイルパスを定数で用意し、ExportAsFixedFormatでPDFを出力しています。このように、簡単にPDF保存することができます。

ただ保存したときに、次のように本来想定していない列がpdfに含まれてしまい、左に位置がずれてしまうケースもありますよね。


位置がずれてしまうケース

そのため、VBAから位置ずれを解消する方法を覚えておくと便利です!

PDF保存したときに位置がずれをなくす方法

次に、PDF保存したときに位置がずれをなくす方法について解説します。

方法1:事前にExcelの設定で調整する

1つ目が、事前にExcelの設定で調整する方法です。

Excelには、印刷するときに印刷範囲を決める便利なオプションがあります。次のように印刷範囲を事前に選択し、印刷範囲を設定してから印刷処理を実行することで、微調整をすることができるのです。

1. 印刷範囲のセルを選択

印刷範囲のセルを選択

2. ページレイアウト → 印刷範囲の設定を選択

印刷範囲の設定を選択

印刷プレビューで確認すると、次のように印刷範囲を狭めることができました。


印刷範囲を指定した場合

このように、印刷範囲を事前に設定しておくことで、簡単に位置の微調整をすることができます。

方法2:余白調整の設定をVBAに追加する

次に、余白調整の設定をVBAで追加する方法についてです。

余白を調整して中央表示したいときは、PDF化する処理の前に以下のようなコードを書きます。

余白調整して中央寄せ表示する方法:

今回の場合は、水平方向(横方向)に調整したいため、CenterHorizontallyを設定したサンプルを用意しました。以下はC:\Users\Samurai\Desktop\PDF出力\に請求書_水平方向中央寄せ.pdfの名前で、PDFを保存するサンプルです。

サンプルコード:

実行結果:

実行結果

Excelのテンプレートシートを使って印刷するときは、印刷範囲を設定する方が調整はしやすいかもしれません。ただ、新しく作ったシートのデータをPDFで保存するようなケースだと・・・VBAで直接微調整できないと厳しいですよね。

そのため、2つの方法があることを覚えておきつつ、使い分けていくのがおすすめです!

Excel操作はわかってもVBAがわからないときの対処方法

ここまで、VBAでPDF保存する方法について解説してきました。

ただ、「ExportAsFixedFormat」がわからないときはVBAでPDF出力の処理を書くのが難しいですよね。ExcelでPDF化する操作はわかっているのに、VBAで書く方法がわからない・・・というときに便利なのが、マクロの記録です。

マクロの記録とは、Excelの操作をVBAに自動変換してくれる機能です。


■マクロの記録の操作の流れ
マクロの記録を開始

PDF形式で名前を付けて保存する操作を実行

マクロの記録を停止

の流れでVBAのコードを自動で出力すると、次のようなコードが自動で生成されます。

自動生成したコード:

Type、fileName以外にもいくつか指定している項目はありますが、「ExportAsFixedFormat」を使っていることがVBAのコードを見て知ることができますよね。手がかりがあればググるのも楽になるため、VBAのコードを理解する速度も上がるはずです。

このように、マクロの記録を使ってExcelの操作をVBA化してコードを見るのは、VBA学習速度を高めるうえでとてもおすすめです!

マクロの記録の使い方については以下で詳しく解説しているので、興味がある方は見てみてくださいね!

【ExcelVBA入門】マクロの記録を使って簡単にマクロを作る方法とは
更新日 : 2018年8月17日

まとめ

今回は、VBAでPDF保存する方法について解説しました。

PDF保存が自動化できると、自動化の幅が広がります。

ぜひ、使ってみてくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説