• 公開日:
  • 更新日:

Excel VBAを使ってPDFを出力する方法

エクセルでPDFを頻繁に出力する場合は、ここでご紹介するVBAコードを使って作業を自動化しましょう。

この記事では、Excel VBAを使ってPDFを出力する方法をご紹介します。

作業中のシートを出力する方法や、複数のシートを指定して出力する方法、指定した範囲をPDF出力する方法をご紹介します。

開発タブを表示する

開発タブを表示する

Excel VBAを使用するには、初期設定では表示されていない「開発」タブを表示させる必要があります。

開発タブを表示させる方法については、以下の通りです。

ファイルタブを選択する

ファイルタブを選択します。

オプションを選択する

オプションを選択します。

開発にチェックを入れる

「Excel のオプション」ダイアログボックスが表示されます。

リボンのユーザー設定を選択し、「開発」にチェックを入れ、OKボタンを押します。

開発タブが表示される

開発タブが表示されました。

PDFを出力するVBAコード

VBAとは「Visual Basic for Applications」の略であり、Microsoft Officeに含まれるアプリの拡張機能のことを指します。

用途に合わせて作成したVBAコードを使用することで、複雑な作業や繰り返し行う処理を自動化できます。

Excel VBAでPDFを出力する際に使用するメソッドや引数については、以下の表をご覧ください。

項目説明
ExportAsFixedFormatエクセルのデータをPDFまたはXPS形式で出力するために使用するメソッド
Type出力形式
xlTypePDF:PDF形式で出力
Filename出力ファイルの保存先とファイル名
Quality画質
標準:xlQualityStandard
最小:xlQualityMinimum
IncludeDocPropertiesドキュメントプロパティ(作成者とタイトルの情報)を残すかどうか
残す:True
残さない:False
IgnorePrintAreas印刷範囲
無視:True
無視しない:False
From発行を開始するページのページ番号を指定
この引数を設定しない場合、1ページから発行が開始される
To発行を終了するページのページ番号を指定
この引数を設定しない場合、最後のページまで発行される
OpenAfterPublish出力後、プレビューを表示するかどうか
表示:True
表示しない:False

作業中のシートをPDF出力する

作業中のシートをPDF出力する

作業中のシートをPDF出力したい場合は、以下のVBAコードが役に立ちます。

例えば、「シート1」で作業しているときはシート1のPDFを出力し、「シート2,シート3」を複数選択しているときはシート2とシート3のPDFを出力します。

Sub 作業中シートPDF出力()

ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
fileName:=ActiveWorkbook.Path & "\" & "作業中シート1.pdf", _
OpenAfterPublish:=True

End Sub

このコードを使用すると、作業中のシートのみがPDF出力されます。

本記事の「Excel VBAを使ってPDFを出力する方法」セクションでは、実際にこのコードを使ってPDF出力する方法を説明します。

複数のシートを指定してPDF出力する

複数シートを出力する

通常、複数のシートをPDFに変換する際は、上の画像のようにシートを選択してからPDF変換を行います。

しかし、選択したいシートが大量にある場合、手でいちいちシートを選択するのはかなりの手間です。VBAを使って自動化してしまいましょう。

複数のシートを指定してPDF出力するVBAコードは、以下の通りです。

Sub 複数シートPDF出力()

Worksheets.Select
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ActiveWorkbook.Path & "\" & "複数シート1.pdf", _
From:=2, _
To:=4, _
OpenAfterPublish:=True

End Sub

このコードを使用すると、2シート目から4シート目までがPDF出力されます。(シート2,シート3,シート4の計3枚)

「From」は、PDFの開始ページを指します。2シート目から変換を開始したい場合は「2」と入力します。

また、「To」はPDFの終了ページを指します。4シート目を最後にしたい場合は「4」と入力します。

指定した範囲をPDF出力する

指定範囲をPDF出力する

指定範囲のみをPDF出力したい場合、通常だと上の画像のようにドラッグなどの操作で範囲を指定する必要があります。

Excel VBAを使用すれば、そのような面倒な作業も簡略化することができます。

指定した範囲をPDF出力するVBAコードは、以下の通りです。

Sub 指定範囲PDF出力()

Dim RangePDF As Range

Set RangePDF = ActiveSheet.Range("A1:F12")
RangePDF.ExportAsFixedFormat _
Type:=xlTypePDF, _
fileName:=ActiveWorkbook.Path & "\" & "指定範囲シート1.pdf", _
OpenAfterPublish:=True

End Sub

このコードを使用すると、Range("A1:F12")で指定したセル範囲がPDF出力されます。

範囲を変更したい場合は「A1:F12」の部分を任意の範囲に書き換えてください。

Excel VBAを使ってPDFを出力する方法

Excel VBAを使ってPDFを出力する方法を説明します。ここでは例として「作業中のシートをPDF出力する」セクションで紹介しているVBAコードを使用して、PDF出力を行います。

ファイルタブを選択する

今回使用するVBAコードは、「現在操作中のファイルがある場所に、作業中のシートのPDFを出力する」というものですので、まずは現在操作中のファイルをマクロ有効ブックとして保存しましょう。ファイルタブを選択します。

参照を選択する

名前を付けて保存、参照の順に選択します。

マクロ有効ブックを選択する

「名前を付けて保存」ダイアログボックスが表示されます。ファイルの保存先(例:ダウンロード)を選択し、ファイル名(例:ブック1)を入力し、ファイルの種類、Excel マクロ有効ブック(*.xlsm)の順に選択します。

保存ボタンを押す

保存ボタンを押します。

Visual Basicを選択する

ファイルの保存が完了しました。エクセルの編集画面に戻り、開発タブ、Visual Basicの順に選択します。

標準モジュールを選択する

「Microsoft Visual Basic for Applications」が起動します。挿入タブ、標準モジュールの順に選択します。

コードを貼り付ける

本記事「作業中のシートをPDF出力する」にあるVBAコードをコピーし、モジュール内にペーストします。

ユーザーフォームを実行する

Sub/ユーザー フォームの実行を選択します。

PDFが出力される

今回は、OpenAfterPublish(ファイルのプレビューを表示するか)をTrue(表示する)に指定したため、PDFのプレビューがすぐに表示されます。作業中のシートがPDFとして出力されていますので、ご確認ください。

PDFが保存されている

PDFがちゃんと保存されているかも確認しておきましょう。エクスプローラー、エクセルのファイルの保存先(例:ダウンロード)の順に選択すると、先ほど保存したファイルと同じ場所に自動でPDFが保存されていることを確認できます。