Tôi đang cố gắng sử dụng mã VBA - mà tôi khá mới - để có được một loạt tài liệu .doc từ tệp PDF (không phải là hình ảnh), nghĩa là, tôi đang cố gắng lặp lại các tệp PDF khác nhau và lưu chúng ở định dạng MS Word. Kinh nghiệm của tôi là từ đọc khá tốt các tài liệu PDF mà tôi có: từ duy trì bố cục chính xác của tập tin PDF hầu hết thời gian. Tôi không chắc liệu đây có phải là lựa chọn đúng đắn để giải quyết vấn đề này hay không và tôi yêu cầu một đề nghị thay thế - sử dụng R, nếu có thể.Lặp qua các tệp PDF và chuyển đổi chúng thành tài liệu với từ
Dù sao, ở đây nó là mã mà tôi tìm thấy here:
Sub convertToWord()
Dim MyObj As Object, MySource As Object, file As Variant
file = Dir("C:\Users\username\work_dir_example" & "*.pdf") 'pdf path
Do While (file <> "")
ChangeFileOpenDirectory "C:\Users\username\work_dir_example"
Documents.Open Filename:=file, ConfirmConversions:=False, ReadOnly:= _
False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
"", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
Format:=wdOpenFormatAuto, XMLTransform:=""
ChangeFileOpenDirectory "C:\Users\username\work_dir_example"
ActiveDocument.SaveAs2 Filename:=Replace(file, ".pdf", ".docx"), FileFormat:=wdFormatXMLDocument _
, LockComments:=False, Password:="", AddToRecentFiles:=True, _
WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False, CompatibilityMode:=15
ActiveDocument.Close
file = Dir
Loop
End Sub
Sau khi dán nó trong cửa sổ của nhà phát triển, tôi lưu các mã trong một mô-đun -> Tôi đóng cửa sổ của nhà phát triển -> tôi bấm vào nút "Macro" -> Tôi thực thi macro "convertToWord". Tôi nhận được lỗi sau trong một cửa sổ bật lên hộp: "Sub hoặc chức năng không được xác định". Làm thế nào để sửa lỗi này? Ngoài ra, trước đây, vì một số lý do mà không rõ ràng với tôi bây giờ, tôi đã nhận được một lỗi liên quan đến chức năng ChangeFileOpenDirectory
, mà dường như không được xác định cũng có.
Cập nhật 27/08/2017
tôi đã thay đổi mã như sau:
Sub convertToWord()
Dim MyObj As Object, MySource As Object, file As Variant
file = Dir("C:\Users\username\work_dir_example" & "*.pdf")
ChDir "C:\Users\username\work_dir_example"
Do While (file <> "")
Documents.Open Filename:=file, ConfirmConversions:=False, ReadOnly:= _
False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
"", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
Format:=wdOpenFormatAuto, XMLTransform:=""
ActiveDocument.SaveAs2 Filename:=Replace(file, ".pdf", ".docx"), FileFormat:=wdFormatXMLDocument _
, LockComments:=False, Password:="", AddToRecentFiles:=True, _
WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False, CompatibilityMode:=15
ActiveDocument.Close
file = Dir
Loop
End Sub
Bây giờ tôi không nhận được bất kỳ thông báo lỗi trong một hộp pop-up, nhưng không có đầu ra trong thư mục làm việc của tôi. Điều gì có thể sai với nó ngay bây giờ?
(a) Là 'Dir ("C: \ Users \ ... t" & "* .pdf") 'ngụ ý rằng thư mục của bạn kết thúc bằng' t'? Nếu vậy, điều đó nên nói 'Dir (' C: \ Users \ ... t \ "&" * .pdf ")' (hoặc, để tiết kiệm một chút thời gian xử lý, 'Dir (" C: \ Users \ ... t \ *. pdf ")'). (b) Tôi không chắc tại sao 'ChangeFileOpenDirectory' sẽ thất bại, ngoài thư mục bạn chỉ định không tồn tại hoặc bạn không có quyền truy cập vào nó. – YowE3K
chỉ cần xóa hai dòng 'ChangeFileOpenDirectory ...'. mở và lưu tệp bằng đường dẫn đầy đủ – jsotola
Tôi đã thử một số đề xuất. Tôi sẽ cập nhật câu hỏi. –