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

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 vyzkoušet bez omezení do 60 dnů.

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ů.


Doporučené nástroje produktivity slov

 

Kutools pro Word - více než 100 pokročilých funkcí pro Word, ušetříte 50% času

  • Složité a opakované operace lze provádět jednorázově během několika sekund.
  • Vložte více obrázků do složek do dokumentu Word najednou.
  • Sloučte a zkombinujte více souborů Wordu napříč složkami do jednoho v požadovaném pořadí.
  • Rozdělte aktuální dokument na samostatné dokumenty podle záhlaví, zalomení sekce nebo jiných kritérií.
  • Převádějte soubory mezi Doc a Docx, Docx a PDF, kolekci nástrojů pro běžné převody a výběr atd. ...
Komentáře (29)
Hodnocení 5 z 5 · 2 hodnocení:
Tento komentář byl moderátorem webu minimalizován
Moc pěkný blog, děkuji za sdílení tohoto blogu. Má tak užitečné informace pro uživatele. Tato informace se mi moc líbila.
Doufám, že budete i nadále sdílet takový druh informací, převeďte word doc do html
Tento komentář byl moderátorem webu minimalizován
VBA Pokud se pokusím převést soubor, který obsahuje makra, makro swith otevřít soubor a skončí bez zavření souboru.
Tento komentář byl moderátorem webu minimalizován
Existuje nějaký způsob, jak převzít název souboru z textu dokumentu?
Tento komentář byl moderátorem webu minimalizován
Ahoj,


existuje snadný způsob, jak upravit kód VBA tak, aby byly dokumenty převedeny na soubory .txt?
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

Zobrazuje se mi runtime chyba '424':
Objekt je požadován

na níže uvedeném kódu

Documents.Open Filename:=xFolder & xFileName, _

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

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

WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _

wdOpenFormatAuto, XMLTransform:=""


říká wdOpenFormatAuto = 0.

Prosím, pomozte.

Díky.
Tento komentář byl moderátorem webu minimalizován
Dobrý den,



Zobrazuje se mi runtime chyba '424':

Objekt je požadován


obrázek přiložen.




Prosím, pomozte.



Díky.
Tento komentář byl moderátorem webu minimalizován
Dobrý den, mnohokrát děkuji za tento kód. Funguje to dobře, ale po každém převodu se mi zobrazí dialogové okno pro uložení slova doc a musím uložit. Můžete do makra zahrnout kód, aby se soubor uložil a zavřel, místo abyste museli zavírat každý z nich?
Tento komentář byl moderátorem webu minimalizován
pokud přidáte "ActiveDocument.Save" přímo nad "ActiveDocument.Close", uloží se dokument před samotným zavřením, takže nemusíte vždy klikat na výzvu k uložení.
Tento komentář byl moderátorem webu minimalizován
díky za vba kód, hodně to pomáhá.
Tento komentář byl moderátorem webu minimalizován
Kód VBA je skvělý. Na zdraví, jedli
Tento komentář byl moderátorem webu minimalizován
Změňte xIndex = InStr(xFileName, "."") + 1


Tento komentář byl moderátorem webu minimalizován
Pokud se změníte
xIndex = InStr(xFileName, ".") + 1 to
xIndex = InStrRev(xFileName, ".") + 1
bude hledat od konce řetězce, aby našel první tečku. Vyhnete se tak problémům, kdy název souboru obsahuje tečky.
Tento komentář byl moderátorem webu minimalizován
Спасибо, очень дельный совет
Tento komentář byl moderátorem webu minimalizován
Pokud změnítexFileName = Dir(xFolder & "*.*", vbNormal)
to xFileName = Dir(xFolder & "*.doc*", vbNormal) makro se nezhroutí, pokud jsou ve stejné složce jiné soubory než Word.
Tento komentář byl moderátorem webu minimalizován
To mi zachránilo den, díky moc!
Chtěl bych jen upozornit pro uživatele, kteří toto používají, pokud se vám zdá, že Word zamrzne, počkejte - generuje soubory .pdf. Moje Word zamrzlo, ale otevřel jsem složku se soubory a viděl jsem, že skutečně generuje .pdf pro všechny soubory.
Tento komentář byl moderátorem webu minimalizován
VBA 很棒!!感謝您的分享。
Tento komentář byl moderátorem webu minimalizován
Mám problém, pokud má documet jméno 1.2.3.5.Blabla bla.doc, ukládá a přepisuje PDF a na závěr mám jen 0ne? poslední jeden document.How mohu vyřešit tento problém?
Tento komentář byl moderátorem webu minimalizován
Pokud se změníte
xIndex = InStr(xFileName, ".") + 1
na
xIndex = InStrRev(xFileName, ".") + 1
bude hledat od konce řetězce, aby našel první tečku. Vyhnete se tak problémům, kdy název souboru obsahuje tečky.

Pokud se změníte
xFileName = Dir(xFolder & "*.*", vbNormal)
na
xFileName = Dir(xFolder & "*.doc*", vbNormal)
makro se nezhroutí, pokud jsou ve stejné složce soubory jiné než Word.
Tento komentář byl moderátorem webu minimalizován
Макрос работает некорректно, если в именах файлов есть точки
Tento komentář byl moderátorem webu minimalizován
Pokud se změníte
xIndex = InStr(xFileName, ".") + 1
na
xIndex = InStrRev(xFileName, ".") + 1
bude hledat od konce řetězce, aby našel první tečku. Vyhnete se tak problémům, kdy název souboru obsahuje tečky.
Tento komentář byl moderátorem webu minimalizován
Pokud se změníte
xIndex = InStr(xFileName, ".") + 1
na
xIndex = InStrRev(xFileName, ".") + 1
bude hledat od konce řetězce, aby našel první tečku. Vyhnete se tak problémům, kdy název souboru obsahuje tečky.

Pokud se změníte
xFileName = Dir(xFolder & "*.*", vbNormal)
na
xFileName = Dir(xFolder & "*.doc*", vbNormal)
makro se nezhroutí, pokud jsou ve stejné složce soubory jiné než Word.
Tento komentář byl moderátorem webu minimalizován
Děkuji mnohokrát! Ušetřil mi tolik času!
Tento komentář byl moderátorem webu minimalizován
Вот тут во втором условии надо 4 заменить на 5:
If ((Right(xFileName, 4)) <> ".doc" Or Right(xFileName, 5) <> ".docx") Then
Для исключения проблемы наличия точек можно сделать так:
xIndex = InStr(xFileName, ".doc") + 1
Ну и про советы других товарищей не забыть ;)

Tento komentář byl moderátorem webu minimalizován
Tento kód je úžasný a rychlý, ale pokud je v souboru Doc odkaz, otevře se okno s informací, že mohou být informace propojené s jiným souborem použít tyto změny? a pak další s žádostí o uložení jako. Existuje způsob, jak přidat do kódu, aby se tyto kroky automaticky provedly za mě? Z ~800 jich je ~40 a já musím být přítomen a dělat to pokaždé.
děkuji
Hodnocení 5 z 5
Tento komentář byl moderátorem webu minimalizován
Ahoj Vincent,
Následující kód VBA vám může pomoci. Zkuste to prosím. Děkujeme vám za vaši reakci.

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
Tento komentář byl moderátorem webu minimalizován
Dobrý den, existuje způsob, jak vybrat jinou výstupní složku a ne původní složku?

děkuji
Tento komentář byl moderátorem webu minimalizován
Ahoj Vincent,
Zkuste prosím následující kód VBA. Po spuštění kódu, an OTEVŘENO Ve druhém vyskakovacím okně vyberte složku obsahující dokumenty, které chcete převést Uložte soubory PDF do vyberte složku pro uložení souborů 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
Zatím zde nejsou žádné komentáře
Načíst další
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění