Gå til hovedindhold

Sådan batch konverteres flere Word-dokumenter til pdf-filer?

Det er nemt for dig at konvertere et Word-dokument til en PDF-fil med funktionen Gem som i Word. Men hvis du vil konvertere alle Word-dokumenter i en mappe til separate PDF-filer på én gang, hvordan kan du opnå det? Denne artikel viser dig en VBA-kode til batchkonvertering af flere Word-dokumenter til pdf-filer i Word.

Batch konvertere flere Word-dokumenter til pdf-filer med VBA
Batch konvertere flere Word-dokumenter til pdf-filer med Kutools for Word


Batch konvertere flere Word-dokumenter til pdf-filer med VBA

Den følgende VBA-kode hjælper dig med hurtigt at konvertere alle Word-dokumenter i en mappe til pdf-filer på én gang. Gør som følger.

1. I Word skal du trykke på andre + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

2. i Microsoft Visual Basic til applikationer vindue, skal du klikke på indsatte > Moduler, kopier derefter under VBA-koden til modulvinduet.

VBA-kode: Batchkonverter flere Word-dokumenter til pdf-filer i 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. Tryk på F5 nøgle for at køre koden.

4. En dialogboks Gennemse vises, vælg den mappe, der indeholder Word-dokumenter, du vil konvertere til pdf-filer, og klik på OK .

Derefter konverteres alle Word-dokumenter i den valgte mappe til separate pdf-filer på én gang. Se skærmbillede:


Batch konvertere flere Word-dokumenter til pdf-filer med Kutools for Word

Hvis VBA-kode er svær at håndtere, kan du prøve Konverter dokumenter nytte af Kutools for Word at løse problemet.

Kutools for Word : Med mere end 100 praktiske Word-tilføjelsesprogrammer, gratis at prøve uden begrænsning 60 dag.

1. klik Kutools Plus > Doc / Docx. Se skærmbillede:

2. i Dokumentformatkonverter vindue, skal du gøre som følger:

2.1) Vælg mappen, der indeholder dokumenter, du vil konvertere til pdf i Kildefilmappe afsnit;
2.2 Vælg Konverter docx til pdf fra Format Konverter rulleliste
2.3) Som standard er Destinationssti samme som kilde er markeret. Hvis du vil placere alle konverterede pdf-filer i samme mappe, skal du bare holde denne mulighed valgt;
Hvis du vil adskille pdf-filer og kildedokumenter, skal du fjerne markeringen i Destinationssti samme som kilde og vælg en ny mappe for at gemme pdf-filerne i Gem til boks;
2.4) Klik på Starten knap. Se skærmbillede:

3. Derefter dukker en dialogboks op for at fortælle dig, hvor mange dokumenter der er konverteret, skal du klikke på OK knappen og luk Dokumentformatkonverter vindue.

Nu konverteres alle .docx-formatdokumenter til pdf-filer.

Hvis du vil have en gratis prøveversion af dette værktøj, skal du gå til download softwaren gratis først, og gå derefter til for at anvende handlingen i henhold til ovenstående trin.

Bedste kontorproduktivitetsværktøjer

Kutools for Word - Forøg din Word-oplevelse med Over 100 Bemærkelsesværdige funktioner!

🤖 Kutools AI-assistent: Transformer din skrivning med AI - Generer indhold  /  Omskriv tekst  /  Opsummer dokumenter  /  Spørg for information baseret på Dokument, alt sammen i Word

📘 Dokumentbeherskelse: Opdelt sider  /  Flet dokumenter  /  Eksporter udvalg i forskellige formater (PDF/TXT/DOC/HTML...)  /  Batch Konverter til PDF  /  Eksporter sider som billeder  /  Udskriv flere filer på én gang...

Indholdsredigering: Batch Find og erstat på tværs af flere filer  /  Ændr størrelse på alle billeder  /  Transponer tabelrækker og kolonner  /  Konverter tabel til tekst...

🧹 Ubesværet rengøring: Fej væk Ekstra pladser  /  Afsnit bryder  /  Alle overskrifter  /  Tekstbokse  /  Hyperlinks  / For mere fjernelse af værktøjer, gå til vores Fjern gruppe...

Kreative indlæg: Indsæt Tusind adskillere  /  Afkrydsningsfelter  /  Radio knapper  /  QR kode  /  Stregkode  /  Diagonal linjebord  /  Ligningstekst  /  Billede Caption  /  Tabeltekst  /  Flere billeder  / Oplev mere i Indsæt gruppe...

???? Præcisionsvalg: Find ud af specifikke sider  /  tabeller  /  former  /  overskrifter  / Forbedre navigation med mere Vælg funktioner...

Stjerneforbedringer: Naviger hurtigt til ethvert sted  /  automatisk indsæt gentagende tekst  /  skifte problemfrit mellem dokumentvinduer  /  11 Konverteringsværktøjer...

???? Vil du prøve disse funktioner? Kutools for Word tilbyder en 60-dages gratis prøveperiode, uden begrænsninger! 🚀
 
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