EXCEL VBA シート・ブックをPDFに出力・一括変換(PDF・XPS)② テクニック

EXCEL VBA シート・ブックをPDFに出力・一括変換(PDF・XPS)② テクニック

 

●はじめに

前回の【EXCEL VBA シート・ブックをPDFに出力・変換・一括(PDF・XPS)「ExportAsFixedFormatメゾット」】にて説明したように、EXCELシート・ブックをPDFファイル・XPSファイルに変換する方法の応用編です。今回のプログラムは、フォルダー内のEXCELファイルを全てPDFファイルに変換します。一括で変換するのでまとめて作業を行う時には便利なプログラムです。

※前回の【シート・ブックをPDFに出力・変換・一括(PDF・XPS)「ExportAsFixedFormatメゾットの基礎については、下記URLを参照して下さい。
https://akira55.com/pdf/

 

 

指定したフォルダー内のEXCELファイルを一括に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


 

●実行前~実行後 ※プログラム実行を実行しますと、選択したフォルダー内のEXCELファイルが全てPDFファイルに変換されました。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA