前回の【EXCEL VBA シート・ブックをPDFに出力・変換・一括(PDF・XPS)「ExportAsFixedFormatメゾット」】にて説明したように、EXCELシート・ブックをPDFファイル・XPSファイルに変換する方法の応用編です。今回のプログラムは、フォルダー内のEXCELファイルを全てPDFファイルに変換します。一括で変換するのでまとめて作業を行う時には便利なプログラムです。
※前回の【シート・ブックをPDFに出力・変換・一括(PDF・XPS)「ExportAsFixedFormatメゾットの基礎については、下記URLを参照して下さい。
※https://akira55.com/pdf/
下記のサンプルプログラムは、ある特定のフォルダーに大量のEXCELファイルがあります。そのEXCELファイルに対して、一括してPDFに変換します。変換するPDFについては、EXCELブック単位(ファイル)でPDFが生成されます。大量のEXCELファイルを一括変換する際は、とても活用できると思います。それでは、大量のEXCELファイルをPDFへ変換するプログラムを順番に説明いたします。
Sub EXCELファイルPDF化03() 'フォルダのEXCELファイルの一括変換 Dim Button, T, I, L As Integer Dim OpenExcelFileName, ExcelFileName, ExcelFilePath, ExFileName As String Application.DisplayAlerts = False '確認メッセージを無効化します。 Button = MsgBox("EXCEファイルの一括PDF変を行いますか?", vbYesNo + vbQuestion, "確認") If Button = vbYes Then OpenExcelFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") 'ダイアログを表示取り込むフォルダーにあるファイルを選択します。 If OpenExcelFileName <> "False" Then ExcelFileName = Dir(OpenExcelFileName) '指定したファイルパスからファイル名を代入します。 ExcelFilePath = Replace(OpenExcelFileName, ExcelFileName, "") '指定したファイルパスを指定します。(ファイルパスからファイル名を取り除く) MsgBox ExcelFilePath & "この選択フォルダからPDFに変換します。" Else MsgBox "キャンセルされました" Exit Sub 'キャンセルでプログラムを終了します。 End If ExFileName = Dir(ExcelFilePath & "*.xls?") '指定したフォルダーから一件目のEXCELファイルを指定します。 Do While ExFileName <> "" '読み込むファイルがなくなるまで繰り返す。 Workbooks.Open FileName:=ExcelFilePath & ExFileName, ReadOnly:=True, UpdateLinks:=0 'EXCELファイルを読み取り専用で読み込む ExFileName = Left(ExFileName, InStr(ExFileName, ".") - 1) ' ファイル名から拡張子を取り除く(.xls?) ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, FileName:=ExcelFilePath & ExFileName '選択したシートをPDF出力 ActiveWindow.Close '読み込んだファイルを閉じます。 ExFileName = Dir() '次のファイルを指定する。 Loop MsgBox "PDFファイルに一括変換しました。" Else MsgBox "処理を中断します" End If Application.DisplayAlerts = True '確認メッセージを有効化します。 End Sub