![見出し画像](https://assets.st-note.com/production/uploads/images/156985435/rectangle_large_type_2_e683b50442cd1e2a5a50f8a719974db8.png?width=1200)
Photo by
mogest
各シートを個別のPDFファイルとして保存~Excel VBA~
いつもありがとうございます。なかまさです。
今回の記事は、各シートを独立したPDFファイルで保存するVBAをご紹介したいと思います。
どういったことをするのか?
ちなみに、エクセルのシートをPDF化する方法は、
VBAを使わなくてもエクセルの標準機能で実行できます。
「名前を付けて保存」の画面で、
「ファイルの種類」でPDFを選択すると、シートをPDF化することが出来ます。
※これ以外にも方法はあります。
がしかし、この方法だと各シートが一つのPDFの統合されてしまいます。
各シートを独立したPDFにしようと思うと、一つ一つ手作業しないといけません。
今回はその部分をVBAで自動化しようという感じです。
とりあえず、VBAを埋め込んだエクセルを共有します。
使い方
使い方は以下の画像の通りです。
![](https://assets.st-note.com/img/1728389627-YRO0JzXnNe5h9WFdwis4arlg.png?width=1200)
![](https://assets.st-note.com/img/1728389690-puNiQM3BH9T675LlPtRcjSGk.png?width=1200)
![](https://assets.st-note.com/img/1728389701-gEMr3c7Y4zpBGlR0t2SJI6TA.png?width=1200)
プログラム内容
Sub SaveSheetsAsPDFFromDialog()
Dim ws As Worksheet
Dim filePath As String
Dim folderPath As String
Dim wb As Workbook
Dim fileDialog As fileDialog
Dim selectedFile As String
' ファイルダイアログを表示して、対象のブックを選択
Set fileDialog = Application.fileDialog(msoFileDialogFilePicker)
With fileDialog
.Title = "保存するエクセルファイルを選択してください"
.Filters.Add "Excelファイル", "*.xls; *.xlsx"
.AllowMultiSelect = False
If .Show <> -1 Then
MsgBox "ファイルが選択されていません。処理を中止します。"
Exit Sub
End If
selectedFile = .SelectedItems(1)
End With
' 選択されたブックを開く
Set wb = Workbooks.Open(selectedFile)
' 保存先フォルダを選択されたこのブックと同じフォルダに設定
folderPath = ThisWorkbook.Path & "\"
' 各シートをPDFとして保存
For Each ws In wb.Sheets
' シートごとにPDFを保存
filePath = folderPath & ws.Name & ".pdf"
ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Quality:=xlQualityStandard
Next ws
' ブックを閉じる
wb.Close False
MsgBox "各シートが個別のPDFとして保存されました。"
End Sub
さいごに
こんな感じになっております。
どうだったでしょうか?使っていただけそうでしょうか?
少しでも皆様の手助けや参考になっていれば幸いです。
今回はここまで!ではまた!