Přejít k hlavnímu obsahu

Jak hromadně převádět více dokumentů Word do souborů PDF?

Pomocí funkce Uložit jako v aplikaci Word můžete snadno převést dokument aplikace Word do souboru PDF. Jak ale toho můžete dosáhnout, pokud chcete převést všechny dokumenty Wordu ve složce do samostatných souborů PDF najednou? Tento článek vám ukáže kód VBA pro dávkový převod více dokumentů Wordu do souborů PDF v Wordu.

Dávkový převod více dokumentů Word do souborů PDF pomocí VBA
Dávkový převod více dokumentů Word do souborů PDF pomocí programu Kutools pro Word


Dávkový převod více dokumentů Word do souborů PDF pomocí VBA

Následující kód VBA vám pomůže rychle převést všechny dokumenty Wordu ve složce na soubory PDF najednou. Postupujte prosím následovně.

1. Ve Wordu stiskněte Další + F11 klávesy pro otevření Microsoft Visual Basic pro aplikace okno.

2. V Microsoft Visual Basic pro aplikace okno, klepněte na tlačítko Vložit > Modul, potom zkopírujte níže uvedený kód VBA do okna modulu.

Kód VBA: Dávkový převod více dokumentů Wordu do souborů PDF v aplikaci Word

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. zmáčkni F5 klíč ke spuštění kódu.

4. Zobrazí se dialogové okno Procházet, vyberte složku obsahující dokumenty Wordu, které převedete na soubory PDF, a klikněte na ikonu OK .

Poté jsou všechny dokumenty Wordu ve vybrané složce převedeny do samostatných souborů PDF najednou. Viz screenshot:


Dávkový převod více dokumentů Word do souborů PDF pomocí programu Kutools pro Word

Pokud je kód VBA obtížně zpracovatelný, můžete zkusit Převést dokumenty užitečnost Kutools pro Word vyřešit problém.

Kutools pro Word : S více než 100 užitečnými doplňky Wordu, zdarma k vyzkoušení bez omezení 60 dny.

1. cvaknutí Kutools Plus > Doc / Docx. Viz snímek obrazovky:

2. V Převaděč formátu dokumentu v okně, musíte udělat následující:

2.1) Vyberte složku obsahující dokumenty, které převedete do formátu PDF v Složka zdrojového souboru sekce;
2.2 Vyberte Převést docx na pdf z Převést formát rozbalovací seznam;
2.3) Ve výchozím nastavení je Cílová cesta stejná jako zdroj políčko je zaškrtnuto. Pokud chcete umístit všechny převedené soubory PDF do stejné složky, ponechte tuto možnost vybranou;
Pokud chcete oddělit soubory PDF a zdrojové dokumenty, musíte zrušit zaškrtnutí políčka Cílová cesta stejná jako zdroj a vyberte novou složku pro uložení souborů PDF do složky Uložit do krabice;
2.4) Klikněte na Home knoflík. Viz screenshot:

3. Poté se zobrazí dialogové okno s informacemi o tom, kolik dokumentů bylo úspěšně převedeno, klepněte na ikonu OK tlačítko a zavřete Převaděč formátu dokumentu okno.

Nyní jsou všechny dokumenty ve formátu .docx převedeny do souborů pdf.

Chcete-li mít bezplatnou zkušební verzi tohoto nástroje, přejděte na software si stáhněte zdarma nejprve a poté přejděte k použití operace podle výše uvedených kroků.

Nejlepší nástroje pro produktivitu v kanceláři

Kutools pro Word - Zvyšte své zkušenosti se slovem Over 100 Pozoruhodné vlastnosti!

Ponořte se do zvýrazněných funkcí níže nebo klikněte sem a prozkoumejte plnou sílu Kutools pro Word.

📘 Mistrovství dokumentů: Rozdělit stránky  /  Sloučit dokumenty  /  Exportovat výběr v různých formátech (PDF/TXT/DOC/XLSX)  /  Dávkový převod do PDF  /  Exportujte stránky jako obrázky  /  Tisk více souborů najednou ...

Úprava obsahu: Dávkové hledání a nahrazení přes více souborů   /  Změnit velikost všech obrázků   /  Transponujte řádky a sloupce tabulky  /  Převést tabulku na text ...

🧹 Čištění bez námahySmést pryč Extra prostory  /  Sekce přestávky  /   Všechny záhlaví  /  Textová pole  /  Odkazy  /  Další nástroje pro odstraňování najdete v naší skupině pro odstranění

Kreativní vložky: Vložit Tisíc separátorů  /  Zaškrtávací políčka  /  Tlačítka rádia  /  QR kód  /  čárový kód  /  Tabulka diagonálních čar  /  Titulek rovnice  /  Titulek obrázku  /  Titulek tabulky  /  Více obrázků  /  Objevte více v naší skupině Insert

???? Přesné výběry: Označte konkrétní stránky  /  Tabulky  /  Tvary  /  nadpisové odstavce  /  Procházejte se snadno pomocí naší Select Group

Vylepšení hvězd: Navigujte rychle na libovolné místo  /  automatické vkládání opakujícího se textu  /  plynule přepínat mezi okny dokumentů  /  11 Konverzní nástroje ...

Transformujte své úkoly ve Wordu pomocí Kutools. 👉 Stáhněte si nyní 30denní zkušební verzi 🚀.

Více       Stažení zdarma      Nákup
 
Comments (36)
Rated 5 out of 5 · 3 ratings
This comment was minimized by the moderator on the site
Just found this, very helpful. Also thanks for the suggested mods above. I am struggling with the following:

If ((Right(xFileName, 4)) <> ".doc" Or Right(xFileName, 4) <> ".docx") Then


It seems to ask to do the conversion if it's not a doc or docx? (Leaving aside that, I think, for docx it should be last 5 chars, not 4?) Anyway,
This comment was minimized by the moderator on the site
the code stopped. I clicked debug. code below was highlighed yellow

Please, any assistance? thank you

Documents.Open Filename:=xFolder & xFileName, _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto, XMLTransform:=""
This comment was minimized by the moderator on the site
Thank you for this. It has just saved me so much time and provided education. I will peruse your site for more top tips.
Thank you again. Brilliant quick fix. One does have to ask, why do MS make such things so impossible to find in their products.
Rated 5 out of 5
This comment was minimized by the moderator on the site
Здравствуйте! Огромное спасибо за модуль! Но есть проблема, у меня куча папок и в каждой папке больше двухсот файлов с разными именами.. Можно ли сделать так чтобы ваш модуль сохранял файлы в PDF не под номерами 1,2,3... и т.д, а под своими собственными именами файлов!? Помогите пожалуйста, и я буду молиться за вас ВЕЧНО!!))
This comment was minimized by the moderator on the site
Hi Егор,
I don't quite understand your question. After converting the file using the VBA code, the name of the PDF file is the same as the name of the Word file.
This comment was minimized by the moderator on the site
Здравствуйте! Большое спасибо вам, за то что вы есть! Спасибо за код он почти идеальный, но ОЧЕНЬ прошу Вас помочь с одним нюансом... Мне Очень важно чтоб ваш макрос сохранял в PDF не под номерами 1.2.3 и т.д, а брал название вордовского файла и сохранял под ним. У меня сто папок и в каждой по 251 файл со своим собственным названием... Мне это Очень нужно, пожалуйста помогите!?????.....
This comment was minimized by the moderator on the site
The VBA macro worked like a charm! :D
Rated 5 out of 5
This comment was minimized by the moderator on the site
Hi Myles,
Thank you for your feedback.
This comment was minimized by the moderator on the site
Hello is there a way to select a different output folder and not the original folder?

thank you
This comment was minimized by the moderator on the site
Hi Vincent,
Please try the following VBA code. After running the code, an Open window pops up, please select a folder containing the douments you want to convert, in the second popping up Save PDF files in window, select a folder to save the PDF files.

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
This comment was minimized by the moderator on the site
The code does not convert my Word files
This comment was minimized by the moderator on the site
This code is amazing and fast but if there is a link in the Doc file it will open a window stating there may be information linked to another file apply these changes? and then another asking to save as. Is there a way to add to the code to automatically do these steps for me? Out of ~800 there are ~40 and I must be present and do this every time.
thank you
Rated 5 out of 5
This comment was minimized by the moderator on the site
Hi Vincent,
The following VBA code can do you a favor. Please give it a try. Thank you for your feedback.

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
This comment was minimized by the moderator on the site
Вот тут во втором условии надо 4 заменить на 5:
If ((Right(xFileName, 4)) <> ".doc" Or Right(xFileName, 5) <> ".docx") Then
Для исключения проблемы наличия точек можно сделать так:
xIndex = InStr(xFileName, ".doc") + 1
Ну и про советы других товарищей не забыть ;)

This comment was minimized by the moderator on the site
Thank you so much! Saved me so much time!
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations