見出し画像

各シートを個別のPDFファイルとして保存~Excel VBA~

いつもありがとうございます。なかまさです。
今回の記事は、各シートを独立したPDFファイルで保存するVBAをご紹介したいと思います。


どういったことをするのか?

ちなみに、エクセルのシートをPDF化する方法は、
VBAを使わなくてもエクセルの標準機能で実行できます。

「名前を付けて保存」の画面で、
「ファイルの種類」でPDFを選択すると、シートをPDF化することが出来ます。
※これ以外にも方法はあります。

がしかし、この方法だと各シートが一つのPDFの統合されてしまいます。
各シートを独立したPDFにしようと思うと、一つ一つ手作業しないといけません。

今回はその部分をVBAで自動化しようという感じです。

とりあえず、VBAを埋め込んだエクセルを共有します。

使い方

使い方は以下の画像の通りです。

プログラム内容

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

さいごに

こんな感じになっております。
どうだったでしょうか?使っていただけそうでしょうか?
少しでも皆様の手助けや参考になっていれば幸いです。

今回はここまで!ではまた!

いいなと思ったら応援しよう!