Macro chuyển đổi PDF sang Word trong Excel VBA

Liên hệ QC

ngduychien

Thành viên chính thức
Tham gia
6/1/07
Bài viết
71
Được thích
45
Trong bài viết này, chúng tôi sẽ cho bạn biết cách bạn có thể phát triển trình chuyển đổi PDF sang Word của riêng mình bằng Excel VBA. Bạn có thể chuyển đổi nhiều tệp bằng macro này. Giữ tất cả các tệp PDF của bạn trong một thư mục.
Bạn cần cung cấp liên kết của đường dẫn thư mục tệp PDF và tệp word trên Trang tính Excel (Đổi tên là Cài đặt). Thư mục tệp Word phải trống. Các tập tin Word sẽ được lưu vào thư mục này sau khi chuyển đổi.
PDF-to-Word-Converter-1.jpg

Dưới đây là Mã VBA mà bạn có thể sao chép trong mô-đun của mình và gán macro này trên một nút trong trang Cài đặt.
Mã:
Option Explicit

Sub Word_To_PDF()

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.DisplayStatusBar = True

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Settings")

Dim pdf_path As String
Dim word_path As String

pdf_path = sh.Range("E4").Value
word_path = sh.Range("E5").Value

Dim fso As New FileSystemObject
Dim fo As Folder
Dim f As File

Set fo = fso.GetFolder(pdf_path)

Dim wa As Object
Dim doc As Object

Set wa = CreateObject("word.application")
wa.Visible = True

Dim file_Count As Integer

For Each f In fo.Files

Application.StatusBar = "Converting - " & file_Count + 1 & "/" & fo.Files.Count
Set doc = wa.Documents.Open(f.Path)
doc.SaveAs2 (word_path & "\" & Replace(f.Name, ".pdf", ".docx"))
doc.Close False
file_Count = file_Count + 1
Next

wa.Quit

MsgBox "All PDF files have been converted in to word", vbInformation
Application.StatusBar = ""

End Sub
 
Chào bạn,
Mình không rành về Excel VBA, bạn có thể giúp mình làm 1 file lệnh excel chuyển đổi toàn bộ file word trong cùng 1 folder sang file pdf được không.
Mình cảm ơn.
 
Chào bạn,
Mình không rành về Excel VBA, bạn có thể giúp mình làm 1 file lệnh excel chuyển đổi toàn bộ file word trong cùng 1 folder sang file pdf được không.
Mình cảm ơn.
Cái code trên thực chất là dùng Word mở file PDF sau đó save as lại thôi, bạn có thể dùng Word mở file PDF và Save as lại cũng được. Bạn muốn chuyển hàng loạt thì có thể sử dụng chuyển Online, rất nhiều trang hổ trợ chuyển đổi rất tốt. Google một mâm.
 
Cái code trên thực chất là dùng Word mở file PDF sau đó save as lại thôi, bạn có thể dùng Word mở file PDF và Save as lại cũng được. Bạn muốn chuyển hàng loạt thì có thể sử dụng chuyển Online, rất nhiều trang hổ trợ chuyển đổi rất tốt. Google một mâm.
Mình hay chuyển file word sang pdf, mỗi lần tầm 10~15 file nên mỗi lần mở save as lại hơi tốn thời gian xíu.
thấy chủ đề trùng với công việc của mình nên tính xin file để thao tác tiện hơn chút.
 
Mình hay chuyển file word sang pdf, mỗi lần tầm 10~15 file nên mỗi lần mở save as lại hơi tốn thời gian xíu.
thấy chủ đề trùng với công việc của mình nên tính xin file để thao tác tiện hơn chút.
10-15 mà cũng sợ mất công?
Thời đại tân tiến con người lười động tay thật.

Thằng hàng xóm gần nhà tôi, chỉ đi ra đầu ngõ mua bánh mì nó cũng xách xe.
Nhà nó trong xóm cách đầu ngõ 15 nhà, mỗi nhà trung bình 4m ---> 60 mét cỡi xe máy.
 
mình dùng thử thì bị lỗi khi convert font tiếng việt chưa được hoàn thiện.
Có cần cài thêm gì không bạn
 
Trong bài viết này, chúng tôi sẽ cho bạn biết cách bạn có thể phát triển trình chuyển đổi PDF sang Word của riêng mình bằng Excel VBA. Bạn có thể chuyển đổi nhiều tệp bằng macro này. Giữ tất cả các tệp PDF của bạn trong một thư mục.
Bạn cần cung cấp liên kết của đường dẫn thư mục tệp PDF và tệp word trên Trang tính Excel (Đổi tên là Cài đặt). Thư mục tệp Word phải trống. Các tập tin Word sẽ được lưu vào thư mục này sau khi chuyển đổi.
PDF-to-Word-Converter-1.jpg

Dưới đây là Mã VBA mà bạn có thể sao chép trong mô-đun của mình và gán macro này trên một nút trong trang Cài đặt.
Mã:
Option Explicit

Sub Word_To_PDF()

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.DisplayStatusBar = True

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Settings")

Dim pdf_path As String
Dim word_path As String

pdf_path = sh.Range("E4").Value
word_path = sh.Range("E5").Value

Dim fso As New FileSystemObject
Dim fo As Folder
Dim f As File

Set fo = fso.GetFolder(pdf_path)

Dim wa As Object
Dim doc As Object

Set wa = CreateObject("word.application")
wa.Visible = True

Dim file_Count As Integer

For Each f In fo.Files

Application.StatusBar = "Converting - " & file_Count + 1 & "/" & fo.Files.Count
Set doc = wa.Documents.Open(f.Path)
doc.SaveAs2 (word_path & "\" & Replace(f.Name, ".pdf", ".docx"))
doc.Close False
file_Count = file_Count + 1
Next

wa.Quit

MsgBox "All PDF files have been converted in to word", vbInformation
Application.StatusBar = ""

End Sub
Dạ trước tiên em xin lỗi, vì có thể câu hỏi của em bị sai chỗ. Tại em thấy nó cũng liên quan ạ. Em có một tệp excel có chứa lệnh chuyển tệp PDF sang tệp Excel (code em cũng tìm và mang về thôi ạ). Khi em chạy trên máy em thì code chạy chuyển tệp bình thường, nhưng đưa sang một máy khác (win 10, office 2013), nó báo lỗi như hình em đính kèm dưới. Em nhờ Anh và mọi người đi qua xem giúp em. Em có làm một số cách trên mạng (repair offfice, kiểm tra add-in,...), mà chưa được. Em cám ơn Anh và mọi người.
 

File đính kèm

  • loi.png
    loi.png
    27.9 KB · Đọc: 15
  • PDF to Excel Converter.xlsm
    19.6 KB · Đọc: 45
Dạ trước tiên em xin lỗi, vì có thể câu hỏi của em bị sai chỗ. Tại em thấy nó cũng liên quan ạ. Em có một tệp excel có chứa lệnh chuyển tệp PDF sang tệp Excel (code em cũng tìm và mang về thôi ạ). Khi em chạy trên máy em thì code chạy chuyển tệp bình thường, nhưng đưa sang một máy khác (win 10, office 2013), nó báo lỗi như hình em đính kèm dưới. Em nhờ Anh và mọi người đi qua xem giúp em. Em có làm một số cách trên mạng (repair offfice, kiểm tra add-in,...), mà chưa được. Em cám ơn Anh và mọi người.
Mình dùng file của bạn cũng bị lỗi như bạn nói.
microsoft excel is waiting for another application to complete an ole action
Mình có thử thay "wdApp.Visible = False sang wdApp.Visible = True" thì excel vẫn báo lỗi trên, nhưng word có hiện lên thông báo .... (Mình quên mất không chụp lại hình thông báo)
1660028061079.png
Mình có ấn ok thì code lại chạy bình thường.
Bạn làm thử xem được không nhé.
Nếu được thì up lại thông báo mà mình quên chụp lại, up lại lên giúp minh.
 
Mình dùng file của bạn cũng bị lỗi như bạn nói.
microsoft excel is waiting for another application to complete an ole action
Mình có thử thay "wdApp.Visible = False sang wdApp.Visible = True" thì excel vẫn báo lỗi trên, nhưng word có hiện lên thông báo .... (Mình quên mất không chụp lại hình thông báo)
View attachment 279765
Mình có ấn ok thì code lại chạy bình thường.
Bạn làm thử xem được không nhé.
Nếu được thì up lại thông báo mà mình quên chụp lại, up lại lên giúp minh.
Chạy bình thường nhưng nó xuất ra tệp word đúng không bạn? Mình cho nó sang excel mà. Mình có thử như Bạn nói thì nó báo như hình dưới, và dữ liệu chuyển sang word, không ra excel. Mà trên máy mình thì chạy bình thường, đưa sang máy khác mới bị, không biết bị sao.
Bài đã được tự động gộp:

Anh @giaiphap và Anh @VetMini xem giúp em với nha. Em cám ơn ạ.
 

File đính kèm

  • error.jpg
    error.jpg
    38.3 KB · Đọc: 8
Sau khi ấn ok thì mình thấy vẫn copy từ word sang excel bình thường.
 
Sau khi ấn ok thì mình thấy vẫn copy từ word sang excel bình thường.
Là tự động nó vẫn xuất dữ liệu qua Excel hay mình phải tự làm từ word sang excel vậy? Nhưng dù có chạy như vậy thì nó vẫn là lỗi, trên máy mình bấm chọn tệp cần chuyển là nó xuất ra excel mà không lỗi hay hỏi gì hết.
 
code vẫn tự copy từ word sang excel nhé.
Nếu bạn không muốn xuất hiện thông báo lỗi

Word will now convert your PDF into a editable Word Document​

như hình trên thì tích vào
Dont show this message again
 
Web KT
Back
Top Bottom