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 件のコメント:
コメントを投稿