【Word VBA】フォルダ内のWordファイルをPDF形式で一括保存するWordマクロ

2020年2月10日

以前の記事「【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

関連記事

【Word VBA】WordファイルをPDF形式で保存するWordマクロ

【Word VBA】複数のWordファイルを一つにまとめるWordマクロ

-コード
-, ,