シートをPDFで出力する
- yuji fukami
- 2024年1月17日
- 読了時間: 2分
<概要>
今回は、特定のシートの印刷範囲をPDFで出力する汎用プロシージャを紹介します。
PDF出力は取引先へのメール添付や、データの保管用として頻繁に行う作業です。手動で行うには印刷プレビューで「Microsoft Print to PDF」を設定して印刷で可能ですが、保存先フォルダやファイル名を毎回指定するのは手間です。
紹介する汎用プロシージャでは保存先フォルダ、ファイル名を引数で指定できます。なので、「ファイル名が顧客ごとに変わる」「保存先のフォルダが日付ごとに異なる」などの場合でも簡単に自動化が出来ます。
<用途>
PDF出力の自動化
<プロシージャ紹介>
Public Sub OutputPDF(Sheet As Worksheet, FolderPath As String, FileName As String, [Message As Boolean = True])
名前: OutputPDF /Subプロシージャ
説明: 指定シートをPDFで出力する
引数
Sheet ・・・PDF化する対象のシート
FolderPath・・・出力先フォルダパス
FileName ・・・出力PDFのファイル名
[Message] ・・・出力確認のメッセージを表示するかどうか
省略なら表示する
<実行例>
次のようなワークシートを用意します。ワークシートのオブジェクト名は「Sheet2」です。
コードは次のようなものを用意します。
Public Sub TestOutputPDF()
Dim FolderPath As String: FolderPath = "C:\Test"
Dim FileName As String: FileName = "PDF出力テスト"
Call OutputPDF(Sheet2, FolderPath, FileName, True)
End Sub
出力先のフォルダパスとPDFのファイル名を引数で指定しています。
実行すると次のようなメッセージが現れて、「はい」を押すと、PDFの出力先のフォルダが起動して出力結果をすぐ確認もできるようになっています。
<サンプルファイル>
<コード>
Public Sub OutputPDF(ByRef Sheet As Worksheet, _
ByRef FolderPath As String, _
ByRef FileName As String, _
Optional ByRef Message As Boolean = True)
'指定シートをPDFで出力する
'20210721
'20231102 出力失敗の対策追加
'参考
'https://www.softex-celware.com/post/outputpdf
'引数
'Sheet ・・・PDF化する対象のシート
'FolderPath・・・出力先フォルダパス
'FileName ・・・出力PDFのファイル名
'[Message] ・・・出力確認のメッセージを表示するかどうか
' 省略なら表示する
'処理
'出力するPDFのファイル名を作成する
Dim PDFPath As String
PDFPath = FolderPath & "\" & FileName & ".pdf"
'PDFで出力する
On Error GoTo ErrorEscape1
Sheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=PDFPath
GoTo ErrorEscape2
ErrorEscape1:
'同じPDFが起動中の場合はエラーになる
MsgBox "PDF出力に失敗しました" & vbLf & _
"同じ名前のPDFが起動中の可能性があります", _
vbExclamation
ErrorEscape2:
'PDFの出力先のフォルダを起動するか確認
Dim MessageStr As String
If Message = True Then
MessageStr = "「" & FileName & ".pdf" & "」" & vbLf & _
"を作成しました" & vbLf & _
"出力先フォルダを起動しますか?"
If MsgBox(MessageStr, vbYesNo + vbInformation) = vbYes Then
Shell "C:\Windows\explorer.exe " & _
FolderPath, vbNormalFocus
End If
End If
End Sub
Comentários