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

Як пакетно конвертувати кілька документів Word у файли PDF?

Вам легко перетворити документ Word у файл PDF за допомогою функції Зберегти як у програмі Word. Але якщо ви хочете перетворити всі документи Word в папці на окремі файли PDF відразу, як ви можете цього досягти? У цій статті буде показано код VBA для пакетного перетворення кількох документів Word у файли PDF у програмі Word.

Пакетне перетворення декількох документів Word у PDF-файли за допомогою VBA
Пакетне перетворення кількох документів Word у PDF-файли за допомогою Kutools для Word


Пакетне перетворення декількох документів Word у PDF-файли за допомогою VBA

Наступний код VBA допомагає швидко перетворити всі документи Word у папці у файли PDF відразу. Будь ласка, виконайте наступне.

1. У програмі Word натисніть клавішу інший + F11 ключі, щоб відкрити Microsoft Visual Basic для додатків вікна.

2 В Microsoft Visual Basic для додатків вікна, натисніть Insert > Модулі, а потім скопіюйте код VBA у вікно модуля.

Код VBA: пакетне перетворення кількох документів Word у файли PDF у програмі 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 Натисніть кнопку F5 клавіша для запуску коду.

4. З'явиться діалогове вікно "Огляд", виберіть папку, яка містить документи Word, які ви конвертуєте у PDF-файли, та натисніть на OK кнопки.

Потім усі документи Word у вибраній папці перетворюються одночасно у окремі PDF-файли. Дивіться знімок екрана:


Пакетне перетворення кількох документів Word у PDF-файли за допомогою Kutools для Word

Якщо з кодом VBA важко обробляти, ви можете спробувати Перетворення документів корисність Kutools для Word вирішити проблему.

Kutools для Word : Маючи понад 100 зручних надбудов Word, безкоштовно спробувати без обмежень протягом 60 днів.

1. клацання Kutools Plus > Doc / Docx. Дивіться знімок екрана:

2 В Конвертер формату документа вікно, потрібно зробити наступне:

2.1) Виберіть папку, в якій містяться документи, які ви конвертуєте у PDF Папка вихідного файлу розділ;
2.2 Виберіть Перетворити docx у pdf від Перетворення формату випадаючий список;
2.3) За замовчуванням Шлях призначення такий же, як і джерело позначено. Якщо ви хочете помістити всі перетворені PDF-файли в одну папку, просто залишайте цей параметр вибраним;
Якщо ви хочете розділити PDF-файли та вихідні документи, вам потрібно зняти прапорець Шлях призначення такий же, як і джерело і виберіть нову папку, щоб зберегти PDF-файли у Зберегти до коробка;
2.4) Клацніть на Start кнопку. Дивіться знімок екрана:

3. Потім з’явиться діалогове вікно, щоб повідомити, скільки документів було успішно перетворено, клацніть на OK і закрийте Конвертер формату документа вікна.

Тепер усі документи формату .docx перетворюються у файли PDF.

Якщо ви хочете отримати безкоштовну пробну версію цієї утиліти, перейдіть на безкоштовно завантажити програмне забезпечення - спочатку, а потім перейдіть до застосування операції, як описано вище.


Рекомендовані засоби підвищення продуктивності слів

 

Kutools для 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":

Об’єкт обов’язковий


зображення додається.




Будь ласка, допоможіть.



Завдяки.
Цей коментар був мінімізований модератором на сайті
Привіт, велике спасибі за цей код. Він працює добре, однак після кожного перетворення я отримую діалогове вікно, щоб зберегти слово doc, і я повинен зберегти. Чи можете ви включити код у макрос, щоб зберегти та закрити файл замість того, щоб закривати кожен з них?
Цей коментар був мінімізований модератором на сайті
якщо ви додасте "ActiveDocument.Save" прямо над "ActiveDocument.Close", це збереже документ перед закриттям, тому вам не доведеться завжди натискати підказку про збереження.
Цей коментар був мінімізований модератором на сайті
дякую за код vba, це дуже допомагає.
Цей коментар був мінімізований модератором на сайті
Код VBA чудовий. На здоров'я, поїли
Цей коментар був мінімізований модератором на сайті
Змініть xIndex = InStr(xFileName, ".") + 1


Цей коментар був мінімізований модератором на сайті
Якщо зміниш
xIndex = InStr(xFileName, ".") + 1 to
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. Після виконання коду an відкритий У другому спливаючому вікні виберіть папку з документами, які потрібно конвертувати Зберігайте 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
There are no comments posted here yet
Load More
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця