以前の記事「【Word VBA】WordファイルをPDF形式で保存するWordマクロ」の応用版です。
今日の作業で大量のWordファイルをPDFにする必要がありまして作ってみました。
かつて作った上記のコードを利用しています。
<目次>
このマクロでできること
マクロを実行するとフォルダを選択するダイアログが表示されます。フォルダを選択するとそのフォルダ内のWordファイルが自動的にPDFファイルに保存されます。
PDFファイルは選択したフォルダと同じフォルダに保存されます。ファイル名の頭に「PDF_」と挿入されます。
マクロ実行前
フォルダを選択します。
このフォルダには、以下のようにWordファイルが保存されています。
マクロ実行後
PDFファイルが同じフォルダ内に作成されました。
マクロの解説
フォルダ内のWordファイルを取得する方法については、以前の記事のコードを参考にしました。
(参考:【Word VBA】複数のWordファイルを一つにまとめるWordマクロ)
31行目でWordファイルを開いています。このときに、Visible:=Falseとしているのでファイルを非表示のまま処理をしています。これをTrueにすれば、実際に開かれているファイルを表示できます。
40行目でPDFファイル名を決めています。このマクロでは、Wordファイル名の先頭に「PDF_」と入れていますが、これは削除してもかまいませんし別の文字列にしてもかまいません。
マクロ
Sub フォルダ内のWordファイルをPDFにする() Dim fld As FileDialog 'フォルダ選択のダイアログ表示用 Dim myFileName As String 'Wordファイル名 Dim myFolderPath As String 'Wordファイル保存先のフォルダパス Dim myFilePath As String 'Wordファイル/PFDファイルのパス Dim myDoc As Document 'Wordファイルのオブジェクト Dim intPos As Integer 'Wordファイル名取得用のピリオドの位置 '------------------------------------------- 'フォルダの選択 '------------------------------------------- Set fld = Application.FileDialog(msoFileDialogFolderPicker) If fld.Show = 0 Then Exit Sub myFolderPath = fld.SelectedItems(1) myFileName = Dir(myFolderPath & "\*.doc*") If myFileName = "" Then MsgBox "選択したフォルダ内に、Wordファイルがありません。" Exit Sub End If '------------------------------------------- 'WordファイルをPDFファイルに変換 '------------------------------------------- Do While myFileName <> "" 'Wordファイルを開く(非表示) myFilePath = myFolderPath & "\" & myFileName Set myDoc = Documents.Open(FileName:=myFilePath, Visible:=False) DoEvents '拡張子のない名称を取得 intPos = InStrRev(myFileName, ".") myFileName = Left(myFileName, intPos - 1) 'PDF形式で保存(ファイル名先頭に「PDF_」と挿入) myDoc.ExportAsFixedFormat _ OutputFileName:=myFolderPath & "\PDF_" & myFileName & ".pdf", _ ExportFormat:=wdExportFormatPDF DoEvents 'Wordファイルを閉じる myDoc.Close wdDoNotSaveChanges DoEvents '次のWordファイルを検索 myFileName = Dir() Loop Set myDoc = Nothing Set fld = Nothing End Sub