やること
管理シートに記載された「シート一覧」と「○」をもとに、列ごとに指定されたシートをまとめてPDF出力する。
背景
【EXCEL】シート名を一括で変更する #Excel - Qiita
1シート1ページの仕様書類を共同で作成し、pdfで出力することがあるのですが、共通となるシートと、個別のシートを1ファイルで管理してみるというテスト運用用のまとめ。
事前確認:Qiitaでの記事
ということで、以下の検索をしたところ、1451件ヒットした。(2026/07/25時点)
「EXCEL PDF出力」の検索結果 - Qiita
以下の検索をしたところ、262件ヒットした。(2026/07/25時点)
「EXCEL PDF出力 VBA」の検索結果 - Qiita
この中から、適当に以下紹介。
特定シートをPDF出力
エクセルのVBAで複数の特定シートをPDF出力 #Excel - Qiita
最終更新日 2023年05月28日 投稿日 2023年05月28日
エクセルVBAでエクセル各シートをPDF出力する #ExcelVBA - Qiita
最終更新日 2021年08月03日 投稿日 2020年03月25日
エクセルVBA(マクロ)でシートを1枚のPDFに自動出力する方法 #Excel - Qiita
投稿日 2019年10月28日
Excelマクロ入門 PDFで保存するマクロを作成 #VBA - Qiita
最終更新日 2026年02月11日 投稿日 2026年02月11日
試験結果の作成~送付をExcel VBAで簡単自動化🌟 #初心者 - Qiita
最終更新日 2025年12月23日 投稿日 2025年12月22日
【VBA】Excelの繰り返し作業を全自動化する20のマクロ【バックアップ・PDF・メール】 #業務効率化 - Qiita
最終更新日 2023年05月28日 投稿日 2023年05月28日
PDFCreator
VBAとPDFCreatorによるPDF出力について #Excel - Qiita
投稿日 2018年12月02日
PDFCreatorについて
以下の検索をしたところ、6件ヒットした。(2026/07/25時点)
「PDFCreator」の検索結果 - Qiita
この中から、残り5件を以下紹介。
jsPDF / jspdf-autotable
jsPDF + autoTable で PDF に表を描画 #Node.js - Qiita
投稿日 2025年10月29日
jsPDF で PDF ファイルを作成 #TypeScript - Qiita
投稿日 2025年10月27日
JAX‑RS(Java API for RESTful Web Services)
JAX-RSによるExcel/CSV/PDFファイルダウンロード #Java - Qiita
最終更新日 2016年07月21日 投稿日 2015年12月24日
PDFDocument を生成する Factory クラス
Factory Method パターン って何なのさ #プログラミング - Qiita
投稿日 2023年11月02日
PDF のプロパティ
R Markdown(とXeLaTeX)で日本語レポート(第2弾) #YAML - Qiita
最終更新日 2022年04月25日 投稿日 2021年08月25日
事例
Attribute VB_Name = "シート抽出pdf化"
Option Explicit
'------------------------------------------------------------------
' 関数: ExportMarkedSheetsToPDF
' 説明:
' 管理シート「シート名変更用」に記載されたシート一覧と印(○)をもとに、
' 列ごとに指定されたシートをまとめて PDF 出力する。
'
' A列:シート名
' 1行目:PDFファイル名
' 2行目以降:対象シートに「○」が付いている列が PDF 出力対象
'
' 引数:
' なし
'
' 戻り値:
' なし
'
' 使用例:
' Call ExportMarkedSheetsToPDF()
'------------------------------------------------------------------
Sub ExportMarkedSheetsToPDF()
Dim wsList As Worksheet ' 管理シート(シート名一覧+印)
Dim lastRow As Long ' A列の最終行(シート名一覧の終端)
Dim lastCol As Long ' 1行目の最終列(PDFファイル名の列数)
Dim c As Long, r As Long ' ループ用(列・行)
Dim fileName As String ' PDFファイル名
Dim saveFolder As String ' PDF保存先フォルダ
Dim sheetNames() As String ' PDFにまとめるシート名の配列
Dim countSheets As Long ' 配列に追加したシート数
' 管理シートをセット
Set wsList = Worksheets("シート名変更用")
'-------------------------------
' PDF保存先フォルダ選択ダイアログ
'-------------------------------
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "PDF保存先フォルダを選択"
If .Show <> -1 Then Exit Sub ' キャンセル時は終了
saveFolder = .SelectedItems(1)
End With
'-------------------------------
' 管理シートの最終行・最終列を取得
'-------------------------------
lastRow = wsList.Cells(wsList.Rows.Count, "A").End(xlUp).row
lastCol = wsList.Cells(1, wsList.Columns.Count).End(xlToLeft).Column
Application.ScreenUpdating = False
'-------------------------------
' 列ごとに PDF 出力処理
'-------------------------------
For c = 2 To lastCol
' 1行目のセルが PDFファイル名
fileName = Trim(wsList.Cells(1, c).Value)
If fileName <> "" Then
countSheets = 0
Erase sheetNames ' 配列初期化
'-------------------------------
' 「○」が付いているシート名を配列に追加
'-------------------------------
For r = 2 To lastRow
If wsList.Cells(r, c).Value = "○" Then
' A列のシート名が存在するか確認
If SheetExists(wsList.Cells(r, "A").Value) Then
countSheets = countSheets + 1
ReDim Preserve sheetNames(1 To countSheets)
sheetNames(countSheets) = wsList.Cells(r, "A").Value
End If
End If
Next r
'-------------------------------
' PDF出力(対象シートが1つ以上ある場合)
'-------------------------------
If countSheets > 0 Then
Worksheets(sheetNames).Select
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
fileName:=saveFolder & "\" & CleanFileName(fileName) & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
End If
Next c
' 管理シートに戻す
wsList.Select
Application.ScreenUpdating = True
MsgBox "PDF出力が完了しました。", vbInformation
End Sub
'------------------------------------------------------------------
' 関数: SheetExists
' 説明: 指定したシート名がブック内に存在するか判定する
'------------------------------------------------------------------
Function SheetExists(sheetName As String) As Boolean
On Error Resume Next
SheetExists = Not Worksheets(sheetName) Is Nothing
On Error GoTo 0
End Function
'------------------------------------------------------------------
' 関数: CleanFileName
' 説明: Windowsで使用できないファイル名文字を "_" に置換する
'------------------------------------------------------------------
Function CleanFileName(fileName As String) As String
Dim x As Variant
For Each x In Array("\", "/", ":", "*", "?", """", "<", ">", "|")
fileName = Replace(fileName, x, "_")
Next x
CleanFileName = fileName
End Function
おまけ
【EXCEL】列の幅と高さ #VBA - Qiita
何かあれば、ここのコメント欄辺りに追加メモする予定。

