Note: The other languages of the website are Google-translated. Back to English

如何將多個Word文檔批量轉換為pdf文件?

使用Word中的“另存為”功能,很容易將Word文檔轉換為PDF文件。 但是,如果要一次將文件夾中的所有Word文檔轉換為單獨的PDF文件,如何實現? 本文將向您展示VBA代碼,以將多個Word文檔批量轉換為Word中的pdf文件。

使用VBA將多個Word文檔批量轉換為pdf文件
使用Kutools for Word將多個Word文檔批量轉換為pdf文件


使用VBA將多個Word文檔批量轉換為pdf文件

以下VBA代碼可幫助您快速將文件夾中的所有Word文檔立即轉換為pdf文件。 請執行以下操作。

1.在Word中,按 其他 + F11 鍵打開 Microsoft Visual Basic for Applications 窗口。

2。 在裡面 Microsoft Visual Basic for Applications 窗口中,單擊 插入 > 模塊,然後將以下VBA代碼複製到“模塊”窗口中。

VBA代碼:在Word中將多個Word文檔批量轉換為pdf文件

Sub ConvertWordsToPdfs()
'Updated by Extendoffice 20181123
    Dim xIndex As String
    Dim xDlg As FileDialog
    Dim xFolder As Variant
    Dim xNewName As String
    Dim xFileName As String
    Set xDlg = Application.FileDialog(msoFileDialogFolderPicker)
    If xDlg.Show <> -1 Then Exit Sub
    xFolder = xDlg.SelectedItems(1) + "\"
    xFileName = Dir(xFolder & "*.*", vbNormal)
    While xFileName <> ""
        If ((Right(xFileName, 4)) <> ".doc" Or Right(xFileName, 4) <> ".docx") Then
            xIndex = InStr(xFileName, ".") + 1
            xNewName = Replace(xFileName, Mid(xFileName, xIndex), "pdf")
            Documents.Open FileName:=xFolder & xFileName, _
                ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
                PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
                WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
                wdOpenFormatAuto, XMLTransform:=""
            ActiveDocument.ExportAsFixedFormat OutputFileName:=xFolder & xNewName, _
                ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
                wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
                Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
                CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
                BitmapMissingFonts:=True, UseISO19005_1:=False
            ActiveDocument.Close
        End If
        xFileName = Dir()
    Wend
End Sub

3。 按 F5 鍵來運行代碼。

4.彈出瀏覽對話框,請選擇包含要轉換為pdf文件的Word文檔的文件夾,然後單擊 OK 按鈕。

然後,所選文件夾中的所有Word文檔將立即轉換為單獨的pdf文件。 看截圖:


使用Kutools for Word將多個Word文檔批量轉換為pdf文件

如果很難處理VBA代碼,則可以嘗試 轉換文件 的效用 Kutools for Word 以解決這個問題。

Kutools for Word :擁有100多個方便的Word加載項, 60天免費試用.

1。 點擊 Kutools 加 > 文件/文件。 看截圖:

2。 在裡面 文件格式轉換器 窗口,您需要執行以下操作:

2.1)在文件夾中選擇包含要轉換為pdf的文檔的文件夾 源文件文件夾 部分;
2.2選擇 將docx轉換成pdf 來自 格式轉換 下拉列表;
2.3)默認情況下, 目標路徑與源相同 框被選中。 如果要將所有已轉換的pdf文件放置在同一文件夾中,只需選中此選項即可;
如果要分開pdf文件和源文檔,則需要取消選中 目標路徑與源相同 框,然後選擇一個新文件夾將pdf文件保存在 儲存 框;
2.4)點擊 開始 按鈕。 看截圖:

3.然後會彈出一個對話框,告訴您已成功轉換了多少文檔,單擊 OK 按鈕並關閉 文件格式轉換器 窗口。

現在,所有.docx格式的文檔都將轉換為pdf文件。

如果您想免費試用該實用程序,請轉到 免費下載軟件 首先,然後按照上述步驟進行操作。


推薦的Word生產力工具

 

Kutools For Word-超過100種Word高級功能,節省50%的時間

  • 複雜和重複的操作可以在幾秒鐘內完成一次處理。
  • 跨文件夾一次將多個圖像插入Word文檔。
  • 將文件夾中的多個Word文件合併並合併為所需順序。
  • 根據標題,分節符或其他條件將當前文檔拆分為單獨的文檔。
  • 在Doc和Docx之間,Docx和PDF之間轉換文件,用於常見轉換和選擇的工具集合等...
按評論排序
留言 (29)
5中的5評分 · 2評級
網站主持人對此評論進行了最小化
這麼好的博客,謝謝分享這個博客。 它為用戶提供了非常有用的信息。 我非常喜歡這個信息。
希望您繼續分享此類信息,將 word doc 轉換為 html
網站主持人對此評論進行了最小化
VBA 如果我嘗試將包含宏的文件轉換為打開文件並在沒有關閉文件的情況下結束。
網站主持人對此評論進行了最小化
有沒有辦法從文檔的文本中獲取文件名?
網站主持人對此評論進行了最小化
你好,


有沒有一種簡單的方法來調整 VBA 代碼,以便將文檔轉換為 .txt 文件?
網站主持人對此評論進行了最小化
嗨,

我收到運行時錯誤“424”:
所需對象

在下面的代碼

Documents.Open 文件名:=xFolder & xFileName, _

ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _

PasswordDocument:="", PasswordTemplate:="", Revert:=False, _

WritePasswordDocument:="", WritePasswordTemplate:="", 格式:= _

wdOpenFormatAuto, XMLTransform:=""


wdOpenFormatAuto = 0 它說。

請大家幫忙。

謝謝。
網站主持人對此評論進行了最小化
嗨,



我收到運行時錯誤“424”:

所需對象


附圖片。




請大家幫忙。



謝謝。
網站主持人對此評論進行了最小化
您好,非常感謝您提供此代碼。 它運行良好,但是,每次轉換後都會出現一個對話框以保存 word doc,我必須保存。 您可以在宏中包含代碼以保存並關閉文件,而不必關閉每個文件嗎?
網站主持人對此評論進行了最小化
如果您在“ActiveDocument.Close”上方添加“ActiveDocument.Save”,它將在關閉之前保存文檔,因此您不必總是點擊保存提示。
網站主持人對此評論進行了最小化
感謝vba代碼,幫助很大。
網站主持人對此評論進行了最小化
VBA 代碼很棒。 乾杯,吃
網站主持人對此評論進行了最小化
更改 xIndex = InStr(xFileName, ".") + 1


網站主持人對此評論進行了最小化
如果你改變
xIndex = InStr(xFileName, ".") + 1 到
xIndex = InStrRev(xFileName, ".") + 1
它將從字符串的末尾開始搜索以找到第一個句點。 這將避免文件名包含句點的問題。
網站主持人對此評論進行了最小化
Спасибо, очень дельный совет
網站主持人對此評論進行了最小化
如果你改變xFileName = Dir(xFolder & "*.*", vbNormal)
到 xFileName = Dir(xFolder & "*.doc*", vbNormal) 宏在同一文件夾中有非 Word 文件時不會崩潰。
網站主持人對此評論進行了最小化
這節省了我的一天,非常感謝!
我想為使用它的人指出,如果 Word 似乎凍結了,請稍等 - 它正在生成 .pdf 文件。 我的 Word 凍結了,但我打開了文件的文件夾,可以看到它確實為所有文件生成了 .pdf。
網站主持人對此評論進行了最小化
VBA 非常棒!!感謝您的分享。
網站主持人對此評論進行了最小化
如果documet 的名稱為1.2.3.5.Blabla bla.doc 我有一個問題,它保存並重寫PDF,最後我只有0ne? 最後一個文件。我該如何解決這個問題?
網站主持人對此評論進行了最小化
如果你改變
xIndex = InStr(xFileName, ".") + 1

xIndex = InStrRev(xFileName, ".") + 1
它將從字符串的末尾開始搜索以找到第一個句點。 這將避免文件名包含句點的問題。

如果你改變
xFileName = Dir(xFolder & "*.*", vbNormal)

xFileName = Dir(xFolder & "*.doc*", vbNormal)
當同一文件夾中有非 Word 文件時,宏不會崩潰。
網站主持人對此評論進行了最小化
Макрос работает некорректно, если в именах файлов есть точки
網站主持人對此評論進行了最小化
如果你改變
xIndex = InStr(xFileName, ".") + 1

xIndex = InStrRev(xFileName, ".") + 1
它將從字符串的末尾開始搜索以找到第一個句點。 這將避免文件名包含句點的問題。
網站主持人對此評論進行了最小化
如果你改變
xIndex = InStr(xFileName, ".") + 1

xIndex = InStrRev(xFileName, ".") + 1
它將從字符串的末尾開始搜索以找到第一個句點。 這將避免文件名包含句點的問題。

如果你改變
xFileName = Dir(xFolder & "*.*", vbNormal)

xFileName = Dir(xFolder & "*.doc*", vbNormal)
當同一文件夾中有非 Word 文件時,宏不會崩潰。
網站主持人對此評論進行了最小化
非常感謝! 為我節省了很多時間!
網站主持人對此評論進行了最小化
Вот тут во втором условии надо 4 заменить на 5:
如果 ((Right(xFileName, 4)) <> ".doc" 或 Right(xFileName, 5) <> ".docx") 那麼
Для исключения проблемы наличия точек можно сделать так:
xIndex = InStr(xFileName, ".doc") + 1
Ну и про советы других товарищей не забыть ;)

網站主持人對此評論進行了最小化
這段代碼很棒而且速度很快,但是如果 Doc 文件中有一個鏈接,它將打開一個窗口,說明可能有鏈接到另一個文件的信息應用這些更改? 然後另一個要求另存為。 有沒有辦法添加到代碼中以自動為我執行這些步驟? 大約 800 人中有 40 人,我必須在場並且每次都這樣做。
感謝
5中的5評分
網站主持人對此評論進行了最小化
嗨,文森特,
下面的 VBA 代碼可以幫你一個忙。 請試一試。 感謝您的反饋意見。

Sub ConvertWordsToPdfs()
'Updated by Extendoffice 20220805
  Dim xIndex As String
  Dim xDlg As FileDialog
  Dim xFolder As Variant
  Dim xNewName As String
  Dim xFileName As String
  On Error Resume Next
  Set xDlg = Application.FileDialog(msoFileDialogFolderPicker)
  If xDlg.Show <> -1 Then Exit Sub
  xFolder = xDlg.SelectedItems(1) + "\"
  xFileName = Dir(xFolder & "*.*", vbNormal)
  Application.DisplayAlerts = wdAlertsNone
  While xFileName <> ""
      If ((Right(xFileName, 4)) <> ".doc" Or Right(xFileName, 4) <> ".docx") Then
          xIndex = InStr(xFileName, ".") + 1
          xNewName = Replace(xFileName, Mid(xFileName, xIndex), "pdf")
          Documents.Open FileName:=xFolder & xFileName, _
              ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
              PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
              WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
              wdOpenFormatAuto, XMLTransform:=""
          ActiveDocument.ExportAsFixedFormat OutputFileName:=xFolder & xNewName, _
              ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
              wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
              Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
              CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
              BitmapMissingFonts:=True, UseISO19005_1:=False
          ActiveDocument.Close wdSaveChanges
      End If
      xFileName = Dir()
  Wend
  Application.DisplayAlerts = wdAlertsAll
End Sub
網站主持人對此評論進行了最小化
您好,有沒有辦法選擇不同的輸出文件夾而不是原始文件夾?

感謝
網站主持人對此評論進行了最小化
嗨,文森特,
請嘗試以下 VBA 代碼。 運行代碼後, 已提交 彈出窗口,請在第二個彈出窗口中選擇一個包含您要轉換的文件的文件夾 將 PDF 文件保存在 窗口中,選擇一個文件夾來保存 PDF 文件。

Sub ConvertWordsToPdfs()
'Updated by Extendoffice 20220805
  Dim xIndex As String
  Dim xDlg As FileDialog, xSaveDlg As FileDialog
  Dim xFolder As Variant, xSaveFolder As Variant
  Dim xNewName As String
  Dim xFileName As String
  On Error Resume Next
  Set xDlg = Application.FileDialog(msoFileDialogFolderPicker)
  xDlg.Title = "Open"
  xDlg.ButtonName = "Open"
  If xDlg.Show <> -1 Then Exit Sub
  xFolder = xDlg.SelectedItems(1) + "\"
  xFileName = Dir(xFolder & "*.*", vbNormal)
  Set xSaveDlg = Application.FileDialog(msoFileDialogFolderPicker)
  xSaveDlg.Title = "Save PDF files in"
  xSaveDlg.ButtonName = "Save"
  If xSaveDlg.Show <> -1 Then Exit Sub
  xSaveFolder = xSaveDlg.SelectedItems(1) + "\"
  Application.DisplayAlerts = wdAlertsNone
  While xFileName <> ""
      If ((Right(xFileName, 4)) <> ".doc" Or Right(xFileName, 4) <> ".docx") Then
          xIndex = InStr(xFileName, ".") + 1
          xNewName = Replace(xFileName, Mid(xFileName, xIndex), "pdf")
          Documents.Open FileName:=xFolder & xFileName, _
              ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
              PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
              WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
              wdOpenFormatAuto, XMLTransform:=""
          ActiveDocument.ExportAsFixedFormat OutputFileName:=xSaveFolder & xNewName, _
              ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
              wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
              Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
              CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
              BitmapMissingFonts:=True, UseISO19005_1:=False
          ActiveDocument.Close wdSaveChanges
      End If
      xFileName = Dir()
  Wend
  Application.DisplayAlerts = wdAlertsAll
  Set xDlg = Nothing
  Set xSaveDlg = Nothing
End Sub
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點