すべてのシートをPDFで保存する
コードを保存したブックの、印刷対象になる表示シートを1つのPDFへ出力します。非表示シートは含みません。
実行前に確認
- タイトルの「すべて」は非表示シートまでを意味しません。印刷範囲が設定されているシートはその範囲だけが出力されます。
- 同名ファイルがある場合は上書きせず中止します。URL形式のクラウド保存先はこの例の対象外です。
1サンプルコード
Sub ブックをPDFで保存する()
Dim outputPath As String
If ThisWorkbook.Path = "" Then
MsgBox "先にブックをローカルフォルダーへ保存してください"
Exit Sub
End If
outputPath = ThisWorkbook.Path & Application.PathSeparator & "売上レポート.pdf"
If Dir(outputPath) <> "" Then
MsgBox "同名PDFがあるため中止しました。ファイル名を変えてください"
Exit Sub
End If
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=outputPath, Quality:=xlQualityStandard, _
IgnorePrintAreas:=False
MsgBox "保存先: " & outputPath
End Sub図で見るファイルの変化
イメージ図概念図:保存済みブックと同じフォルダーにPDFを追加します。
変更前
ローカルに保存済みのブック。売上レポート.pdfはまだない
マクロ:確認
保存先があり、同名PDFがないことを確認
マクロ:出力
表示シートの印刷対象を、設定された印刷範囲でPDF化
変更後
同じフォルダー ├ 元のブック └ 売上レポート.pdf
未保存・同名PDFありなら中止。非表示シートは含まず、元ブックをPDFへ置き換える処理ではありません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
ブックをローカルの作業フォルダーへ保存し、各シートの印刷範囲・改ページを確認します。
- 3
コードの「売上レポート.pdf」を希望のファイル名へ変更します。同じ名前のPDFがないことを確認します。
- 4
実行するSubの内側にカーソルを置き、F5キーを押します。
- 5
ブックと同じフォルダーにPDFが作られます。表示された保存先を開き、ページを確認します。同名PDFがある場合は上書きせず中止します。