打开PDF,在几十个文档之后保存DOCX错误并输出乱码/损坏的文件

时间:2018-02-15 11:29:37

标签: vba pdf ms-word docx

我有几千个PDF文件需要转换为DOCX。我写了以下宏:

Sub convertPDFtoDOCX()
'
' convertPDFtoDOCX Macro
'
'
    Dim docDirectory As String
    Dim pdfDirectory As String
    Dim docPath As String
    Dim doc As Document

    docDirectory = "C:\Users\<USER>\DOCX\"
    pdfDirectory = "C:\Users\<USER>\PDF\"

    pdfFile = Dir(pdfDirectory & "*.*")

    Do While pdfFile <> ""
        docPath = docDirectory & pdfFile & ".docx"

        Set doc = Documents.Open(FileName:=pdfDirectory & pdfFile)
        ActiveDocument.SaveAs2 FileName:=docPath, FileFormat:=wdFormatXMLDocument

        Documents.Close
        pdfFile = Dir
    Loop
End Sub

它适用于前几十个文档,但随后开始输出“损坏的文件”,这些文件不是docx,也不能用PDF查看器打开。开始窃听时没有错误消息。问题不是来自PDF文件,因为如果我停止宏并在相同的文档上再次启动它,它们将被第二次正确转换。

“已损坏”文件如下所示:

%PDF-1.5
%µµµµ
1 0 obj
<</Type/Catalog/Pages 2 0 R/Lang(fr-FR) /StructTreeRoot 91 0 R/MarkInfo<</Marked true>>>>
endobj
2 0 obj
<</Type/Pages/Count 21/Kids[ 3 0 R 27 0 R 31 0 R 42 0 R 44 0 R 46 0 R 48 0 R 55 0 R 59 0 R 61 0 R 63 0 R 65 0 R 67 0 R 69 0 R 71 0 R 73 0 R 75 0 R 77 0 R 79 0 R 81 0 R 88 0 R] >>
endobj
3 0 obj
<</Type/Page/Parent 2 0 R/Resources<</Font<</F1 5 0 R/F2 9 0 R/F3 11 0 R/F4 16 0 R/F5 18 0 R/F6 20 0 R/F7 25 0 R>>/ExtGState<</GS7 7 0 R/GS8 8 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 595.2 841.8] /Contents 4 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 0>>
endobj
4 0 obj
<</Filter/FlateDecode/Length 4428>>
stream
xœ­\Ën7Ýð?Ô.Ý ¨Ä7«‚ ¹%e4ð+²’Y$Yt¤¶£A,9RÛÈüÕ|Æ|ÆìÙäæ^²ÈzðQ-¦ È]U¼$//:<yØÞ¾__o«££Ã“ív}ýóæ¦úþðÅýv{ÿñÇë}Ú¾]¸½[ooïï

导致问题的原因是什么?如何解决?

我在Windows 10上使用Word 2016。

1 个答案:

答案 0 :(得分:0)

我认为如果没有Microsoft的补丁,您可以解决问题。同时,您可以将代码移动到Word外部运行,并为每次迭代创建一个新的Word.Application对象。