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

Làm thế nào để chuyển đổi hàng loạt nhiều tài liệu Word sang tệp pdf?

Bạn có thể dễ dàng chuyển đổi tài liệu Word sang tệp PDF với chức năng Save as trong Word. Nhưng nếu bạn muốn chuyển đổi tất cả các tài liệu Word trong một thư mục để tách các tệp PDF cùng một lúc, làm thế nào bạn có thể đạt được điều đó? Bài viết này sẽ chỉ cho bạn một mã VBA để chuyển đổi hàng loạt nhiều tài liệu Word sang tệp pdf trong Word.

Chuyển đổi hàng loạt nhiều tài liệu Word sang tệp pdf với VBA
Chuyển đổi hàng loạt nhiều tài liệu Word sang tệp pdf với Kutools cho Word


Chuyển đổi hàng loạt nhiều tài liệu Word sang tệp pdf với VBA

Đoạn mã VBA sau đây giúp bạn nhanh chóng chuyển đổi tất cả các tài liệu Word trong một thư mục sang tệp pdf cùng một lúc. Hãy làm như sau.

1. Trong Word, nhấn Khác + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Mô-đun, sau đó sao chép mã VBA bên dưới vào cửa sổ Mô-đun.

Mã VBA: Chuyển đổi hàng loạt nhiều tài liệu Word sang tệp pdf trong 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. Nhấn nút F5 phím để chạy mã.

4. Hộp thoại Duyệt hiện lên, vui lòng chọn thư mục chứa tài liệu Word bạn sẽ chuyển đổi sang tệp pdf và nhấp vào OK .

Sau đó, tất cả các tài liệu Word trong thư mục đã chọn được chuyển đổi thành các tệp pdf riêng biệt cùng một lúc. Xem ảnh chụp màn hình:


Chuyển đổi hàng loạt nhiều tài liệu Word sang tệp pdf với Kutools cho Word

Nếu khó xử lý mã VBA, bạn có thể thử Chuyển đổi tài liệu tiện ích của Kutools cho Word để giải quyết vấn đề.

Kutools cho Word : Với hơn 100 phần bổ trợ Word tiện dụng, miễn phí để thử mà không có giới hạn trong 60 ngày.

1. nhấp chuột Kutools Plus > Doc / Docx. Xem ảnh chụp màn hình:

2. bên trong Công cụ chuyển đổi định dạng tài liệu cửa sổ, bạn cần làm như sau:

2.1) Chọn thư mục chứa các tài liệu bạn sẽ chuyển đổi sang pdf trong Thư mục tệp nguồn phần;
2.2 Chọn Chuyển đổi docx sang pdf từ Chuyển đổi định dạng danh sách thả xuống;
2.3) Theo mặc định, Đường dẫn đích giống với nguồn hộp được chọn. Nếu bạn muốn đặt tất cả các tệp pdf đã chuyển đổi trong cùng một thư mục, chỉ cần chọn tùy chọn này;
Nếu bạn muốn tách các tệp pdf và tài liệu nguồn, bạn cần bỏ chọn Đường dẫn đích giống với nguồn và chọn một thư mục mới để lưu các tệp pdf trong Lưu vào cái hộp;
2.4) Nhấp vào Khởi đầu cái nút. Xem ảnh chụp màn hình:

3. Sau đó, một hộp thoại bật lên cho bạn biết có bao nhiêu tài liệu đã được chuyển đổi thành công, hãy nhấp vào OK nút và đóng Công cụ chuyển đổi định dạng tài liệu cửa sổ.

Bây giờ tất cả các tài liệu định dạng .docx đều được chuyển đổi thành tệp pdf.

Nếu bạn muốn dùng thử miễn phí tiện ích này, vui lòng truy cập tải xuống miễn phí phần mềm đầu tiên, và sau đó đi đến áp dụng hoạt động theo các bước trên.


Công cụ năng suất Word được đề xuất

 

Kutools cho Word - Hơn 100 tính năng nâng cao cho Word, tiết kiệm 50% thời gian của bạn

  • Các hoạt động phức tạp và lặp đi lặp lại có thể được thực hiện xử lý một lần trong vài giây.
  • Chèn nhiều hình ảnh trên các thư mục vào tài liệu Word cùng một lúc.
  • Hợp nhất và kết hợp nhiều tệp Word trên các thư mục thành một với thứ tự mong muốn của bạn.
  • Chia tài liệu hiện tại thành các tài liệu riêng biệt theo tiêu đề, ngắt phần hoặc các tiêu chí khác.
  • Chuyển đổi tệp giữa Doc và Docx, Docx và PDF, bộ sưu tập các công cụ để chuyển đổi và lựa chọn phổ biến, v.v.
Nhận xét (33)
Xếp hạng 5 trong 5 · xếp hạng 3
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Blog rất hay, Cảm ơn bạn đã chia sẻ blog này. Nó có rất nhiều thông tin hữu ích cho người dùng. Tôi thích thông tin này rất nhiều.
Mong các bạn tiếp tục chia sẻ những thông tin như vậy để chuyển từ doc sang html
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
VBA nếu tôi cố gắng chuyển đổi tệp có chứa macro thành macro sẽ mở tệp và kết thúc mà không đóng tệp.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Có cách nào để tên tệp được lấy từ văn bản của tài liệu?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào bạn,


có cách nào dễ dàng để điều chỉnh Mã VBA để Tài liệu được chuyển đổi thành tệp .txt-Files không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,

Tôi gặp lỗi thời gian chạy '424':
Đối tượng được yêu cầu

ở đoạn mã dưới đây

Documents.Open Filename: = xFolder & xFileName, _

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

PasswordDocument: = "", PasswordTemplate: = "", Hoàn nguyên: = Sai, _

WritePasswordDocument: = "", WritePasswordTemplate: = "", Định dạng: = _

wdOpenFormatAuto, XMLTransform: = ""


wdOpenFormatAuto = 0 nó cho biết.

Xin vui lòng giúp đỡ.

Cảm ơn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,



Tôi gặp lỗi thời gian chạy '424':

Đối tượng được yêu cầu


hình ảnh đính kèm.




Xin vui lòng giúp đỡ.



Cảm ơn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Cảm ơn bạn rất nhiều vì mã này. Nó đang hoạt động tốt, tuy nhiên, tôi nhận được một hộp thoại sau mỗi lần chuyển đổi để lưu từ doc và tôi phải lưu. Bạn có thể đưa mã vào macro để thực hiện việc lưu và đóng tệp đó thay vì phải đóng từng cái không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
nếu bạn thêm "ActiveDocument.Save" ngay phía trên "ActiveDocument.Close", nó sẽ lưu tài liệu trước khi tự đóng, do đó bạn không phải luôn nhấn vào lời nhắc lưu.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
cảm ơn vì mã vba , nó giúp ích rất nhiều.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Mã VBA là tuyệt vời. Chúc mừng, đã ăn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Thay đổi xIndex = InStr (xFileName, ".") + 1


Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Nếu bạn thay đổi
xIndex = InStr (xFileName, ".") + 1 tới
xIndex = InStrRev (xFileName, ".") + 1
nó sẽ tìm kiếm từ cuối chuỗi để tìm khoảng thời gian đầu tiên. Điều này sẽ tránh các vấn đề trong đó tên tệp chứa dấu chấm.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Спасибо, очень дельный совет
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Nếu bạn changexFileName = Dir (xFolder & "*. *", VbNormal)
thành xFileName = Dir (xFolder & "* .doc *", vbNormal) macro sẽ không bị lỗi khi có các tệp không phải Word trong cùng một thư mục.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điều này đã cứu ngày của tôi, cảm ơn rất nhiều!
Tôi chỉ muốn chỉ ra cho những người đang sử dụng điều này, nếu Word có vẻ như bị đóng băng, hãy đợi - nó đang tạo các tệp .pdf. Word của tôi bị đóng băng nhưng tôi đã mở thư mục tệp và có thể thấy rằng nó thực sự đang tạo .pdf cho tất cả các tệp.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
VBA 很棒 !! 感謝 您 的 分享。
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi gặp sự cố nếu tài liệu có tên 1.2.3.5.Blabla bla.doc, nó lưu và viết lại các tệp PDF và trong kết luận tôi chỉ có 0ne? tài liệu cuối cùng. Làm cách nào để giải quyết vấn đề này?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Nếu bạn thay đổi
xIndex = InStr (xFileName, ".") + 1
đến
xIndex = InStrRev (xFileName, ".") + 1
nó sẽ tìm kiếm từ cuối chuỗi để tìm khoảng thời gian đầu tiên. Điều này sẽ tránh các vấn đề trong đó tên tệp chứa dấu chấm.

Nếu bạn thay đổi
xFileName = Dir (xFolder & "*. *", vbNormal)
đến
xFileName = Dir (xFolder & "* .doc *", vbNormal)
macro sẽ không bị lỗi khi có các tệp không phải Word trong cùng một thư mục.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Макрос работает некорректно, если в именах файлов есть точки
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Nếu bạn thay đổi
xIndex = InStr (xFileName, ".") + 1
đến
xIndex = InStrRev (xFileName, ".") + 1
nó sẽ tìm kiếm từ cuối chuỗi để tìm khoảng thời gian đầu tiên. Điều này sẽ tránh các vấn đề trong đó tên tệp chứa dấu chấm.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Nếu bạn thay đổi
xIndex = InStr (xFileName, ".") + 1
đến
xIndex = InStrRev (xFileName, ".") + 1
nó sẽ tìm kiếm từ cuối chuỗi để tìm khoảng thời gian đầu tiên. Điều này sẽ tránh các vấn đề trong đó tên tệp chứa dấu chấm.

Nếu bạn thay đổi
xFileName = Dir (xFolder & "*. *", vbNormal)
đến
xFileName = Dir (xFolder & "* .doc *", vbNormal)
macro sẽ không bị lỗi khi có các tệp không phải Word trong cùng một thư mục.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn rất nhiều! Đã tiết kiệm cho tôi rất nhiều thời gian!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Вот тут во втором условии надо 4 заменить на 5:
If ((Right (xFileName, 4)) <> ".doc" or Right (xFileName, 5) <> ".docx") Then
Для исключения проблемы наличия точек можно сделать так:
xIndex = InStr (xFileName, ".doc") + 1
Ну и про советы других товарищей не забыть;)

Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Mã này thật tuyệt vời và nhanh chóng nhưng nếu có một liên kết trong tệp Doc, nó sẽ mở ra một cửa sổ cho biết có thể có thông tin được liên kết với tệp khác áp dụng những thay đổi này? và sau đó yêu cầu lưu dưới dạng. Có cách nào để thêm vào mã để tự động thực hiện các bước này cho tôi không? Trong số ~ 800 có ~ 40 và tôi phải có mặt và làm điều này mọi lúc.
cảm ơn bạn
Xếp hạng 5 trong 5
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Vincent
Mã VBA sau đây có thể giúp bạn. Hãy thử một lần. Cảm ơn phản hôi của bạn.

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
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, có cách nào để chọn một thư mục đầu ra khác và không phải thư mục gốc không?

cảm ơn bạn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Vincent
Vui lòng thử mã VBA sau. Sau khi chạy mã, một Mở cửa sổ bật lên, vui lòng chọn một thư mục chứa các tài liệu bạn muốn chuyển đổi, trong cửa sổ bật lên thứ hai Lưu các tệp PDF trong cửa sổ, chọn một thư mục để lưu các tệp 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
Không có bình luận nào được đăng ở đây
Tải thêm
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL