VBAで記述するには、「ExportAsFixedFormat」メソッドを使います。
簡単に以下のような画面を作ってみました。
1つ目のテキストボックス(TextBox1)には、PDFに変換したいExcelファイルが格納されているフォルダのパスを指定します。
2つ目のテキストボックス(TextBox2)には、変換後のPDFファイルを格納するフォルダパスを指定します。
最後に、ボタン(CommandButton1)を押下すると処理が始まります。
実際のコードはこんな感じに書きました。
Private Sub CommandButton1_Click() Dim path As String path = TextBox1.Value 'フォルダパスを取得 Application.ScreenUpdating = False '画面描画OFF Call CreatePDF(path) 'フォルダパスを渡してメイン処理呼び出し Application.ScreenUpdating = True '画面描画ON MsgBox "PDF変換完了!!!" End Sub
ボタンを押下すると、テキストボックス(TextBox1)のパスを引数にメイン処理を呼び出します。
Sub CreatePDF(FolderPath As String) Dim FilePath As String 'Excelフルパス用変数 Dim PDFPath As String 'PDFフルパス用変数 Dim ExcelBook As Workbook Dim i As Object Dim FSO As Object 'FileSystemObject用変数 Set FSO = CreateObject("Scripting.FileSystemObject") For Each sbFolders In FSO.getfolder(FolderPath).SubFolders Call CreatePDF(sbFolders.path) Next sbFolders For Each i In FSO.getfolder(FolderPath).Files FilePath = FolderPath & "\" & i.Name 'パス&ファイル名を取得 Set ExcelBook = Workbooks.Open(FilePath) PDFPath = TextBox2.Value & "\" & ActiveWorkbook.Name & ".pdf" 'パス&アクティブファイル名&.PDF ExcelBook.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=PDFPath, _ quality:=xlQualityStandard ActiveWorkbook.Close Next i Set FSO = Nothing End Sub
上記がメイン処理部分のコードです。
FileSystemObjectを使って、指定したフォルダ以下のファイルを全てPDFに変換しています。
以下は、コマンドプロンプトからtreeコマンド「tree /F > tree.log」でフォルダ構成を取得した画像です。これをPDF化します。
マクロを実行すると、このようにTextBox2で指定したフォルダにPDFに変換したファイルが格納されます。
0 件のコメント:
コメントを投稿