「VBAでPDFファイル作りたいんだけど、どう作んの?」
はい、これは秒です、秒。
さて、さっそくVBAでPDFのつくりかた3つを紹介しつつ解説していきましょう。
VBAでPDFを保存できる3つの方法とは?
- 選択したシートごとに1つずつPDFを作成する方法
- すべてのシートを1つのPDFにする方法
- 選択したシートを1つのPDFにする方法
はい、今回紹介するのはこの3つですね。
順に説明していきます。
選択したシートごとに1つずつPDFを作成する方法
Sub makePDFFile(sheets_name_array As Variant, output_folder_name As String) Dim main_folder_path As String main_folder_path = ThisWorkbook.Path & "\" & output_folder_name & "\" If Dir(main_folder_path, vbDirectory) = "" Then MkDir main_folder_path Dim base_sheet As Worksheet For Each base_sheet In Worksheets(sheets_name_array) base_sheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=main_folder_path & base_sheet.Name & ".pdf", _ Quality:=xlQualityStandard Next base_sheet End Sub
まずは、VBAで選択したシートをあらかじめ設定。
シートごとに1つずつPDFにしていく方法ですね。
処理の流れはつぎのような感じ。
- 保存するフォルダまでのフルパスを設定する
- もしフォルダがなければ作成する
- シートごとに作成したPDFをそのフォルダのなかに保存する
使いかた: シートごとに1つずつPDFにしていく方法
- PDFにしたいシート名を配列に設定する
Dim print_sheets as Variant print_sheets = Array("Sheet_1", "Sheet_2", "Sheet_3")
- PDFを保存したいフォルダ名を設定する(存在しなくてもOK)
Dim folder_name as String folder_name = "PDF_folder"
- Callして設定した「シート名」「フォルダ名」をいれる
Call makePDFFile(print_sheets, folder_name)
すべてのシートを1つのPDFにする方法
Sub makePDFFileAll(output_file_name As String, output_folder_name As String) Dim main_folder_path As String main_folder_path = ThisWorkbook.Path & "\" & output_folder_name & "\" If Dir(main_folder_path, vbDirectory) = "" Then MkDir main_folder_path ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=main_folder_path & output_file_name & ".pdf", _ Quality:=xlQualityStandard End Sub
つぎは、すべてのシートを1つのPDFに保存する方法ですね。
処理の流れはつぎのような感じ。
- 保存するフォルダまでのフルパスを設定する
- もしフォルダがなければ作成する
- 1つにまとめたPDFをそのフォルダのなかに保存する
使いかた: すべてのシートを1つのPDFに保存する方法
- 保存するPDFファイルの名前を設定する
Dim PDF_file_name as String PDF_file_name = "PDF_sample"
- 保存するPDFのフォルダ名を設定する
Dim folder_name as String folder_name = "PDF_folder"
- Callして「ファイルの名前」「フォルダ名」をいれる
Call makePDFFileAll(PDF_file_name, folder_name)
選択したシートを1つのPDFにする方法
Sub makePDFWrapSheets(sheet_name_array As Variant, _ output_file_name As String, output_folder_name As String) Dim main_folder_path As String main_folder_path = ThisWorkbook.Path & "\" & output_folder_name & "\" If Dir(main_folder_path, vbDirectory) = "" Then MkDir main_folder_path Worksheets(sheet_name_array).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=main_folder_path & output_file_name & ".pdf", _ Quality:=xlQualityStandard End Sub
さて最後は、選択したシートを1つのPDFに保存する方法です。
処理の流れはつぎのような感じ。
- 保存するフォルダまでのフルパスを設定する
- もしフォルダがなければ作成する
- 複数のシートを選択して1つにまとめる
- 1つにまとめたPDFをそのフォルダのなかに保存する
使いかた: 選択したシートを1つのPDFに保存する方法
- PDFにしたいシート名を配列に設定する
Dim print_sheets as Variant print_sheets = Array("Sheet_1", "Sheet_2", "Sheet_3")
- 保存するPDFファイルの名前を設定する
Dim PDF_file_name as String PDF_file_name = "PDF_sample"
- 保存するPDFのフォルダ名を設定する
Dim folder_name as String folder_name = "PDF_folder"
- Callして「シート名」「ファイルの名前」「フォルダ名」をいれる
Call makePDFWrapSheets(print_sheets, PDF_file_name, folder_name)
まとめ: いろんなシートをPDFに保存していこう
- 選択したシートごとに1つずつPDFを作成する方法
- すべてのシートを1つのPDFにする方法
- 選択したシートを1つのPDFにする方法
はい、この3つの方法でPDFの保存は完ぺき。
使えるところけっこう多いんで、覚えておくと効率化が進むかもしれませんね。
関連fa-arrow-circle-right【VBA】業務効率化に便利なツール【まとめ】