gpt4 book ai didi

excel - 使用 vba 将 docx 导出为 pdf

转载 作者:行者123 更新时间:2023-12-04 21:43:43 25 4
gpt4 key购买 nike

我想将 docx 文件从 excel vba 导出为 pdf 文件。
文档 file.docx 已正确打开。
但是,调用方法ExportAsFixedFormat 时发生错误。 : 运行时错误“5”:无效的过程调用或参数 .
我认为争论是可以的。
下一个小错误:ActiveDocument.Path不起作用。有一个错误“运行时错误'424':需要对象”因此我使用了WordApp.Documents(myFileName).ExportAsFixedFormat而是 ActiveDocument.ExportAsFixedFormat .
此代码从文件 Macro.xlsm 执行。我使用 Microsoft Office 2021。
Method exportasfixedformat

Dim fileNameDoc As String
Dim fileNamePdf As String
Dim WordApp

Set WordApp = CreateObject("Word.Application")
FileNameDoc = "D:\rd\file.docx"

WordApp.Documents.Open FileNameDoc
WordApp.Visible = True
WordApp.Documents(FileNameDoc).Activate ' <- activation doesn't work

fileNamePdf = "D:\rd\file.pdf"
'fileNamePdf = ActiveDocument.Path & "\" & "file.pdf"

' https://docs.microsoft.com/en-us/office/vba/api/word.document.exportasfixedformat
' here is error: Run-time error '5': Invalid procedure call or argument
WordApp.Documents(myFileName).ExportAsFixedFormat OutputFileName:=fileNamePdf, _
ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=False, _
OptimizeFor:=wdExportOptimizeForPrint, _
Range:=wdExportAllDocument, _
Item:=wdExportDocumentWithMarkup, _
IncludeDocProps:=False, _
CreateBookmarks:=wdExportCreateNoBookmarks, _
BitmapMissingFonts:=True

' https://docs.microsoft.com/en-us/office/vba/api/word.document.close(method)'
WordApp.Documents(myFileName).Close _
'ActiveDocument.Close _
SaveChanges:=wdSaveChanges, _
OriginalFormat:=wdOriginalDocumentFormat
任何想法的解决方案?

最佳答案

您使用的代码是用于 Word 的,并且使用了很多 Word 常量,例如wdExportFormatPDF , wdExportOptimizeForPrint , wdExportDocumentWithMarkup , wdExportCreateNoBookmarks , wdSaveChanges , wdOriginalDocumentFormat . Excel 不明白这些是什么。
你有两个选择。最好的选择是设置对 Word 库的引用。在 Visual Basic 编辑器中,从工具菜单中选择引用。在生成的对话框页面中向下(大约 16 次),直到您看到 Microsoft Word 对象库的条目并选中它旁边的框。
enter image description here
您的另一个选择是在代码中为要使用的每个 Word 常量创建常量。您需要使用 Word 中的对象浏览器或联机帮助来查找值。
同样,Excel 不理解 ActiveDocument .您需要在任何想要使用的 Word 对象前加上 WordApp .但是,如果您使用变量指向您打开的文档会更好:

Set WordDoc = WordApp.Documents.Open(FileNameDoc)
然后您可以使用 WordDoc变量而不是 ActiveDocument
Dim fileNameDoc As String
Dim fileNamePdf As String
Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = CreateObject("Word.Application")
fileNameDoc = "D:\rd\file.docx"

Set WordDoc = WordApp.Documents.Open(fileNameDoc)
WordApp.Visible = True

fileNamePdf = WordDoc.Path & "\" & "file.pdf"

' https://docs.microsoft.com/en-us/office/vba/api/word.document.exportasfixedformat
WordDoc.ExportAsFixedFormat OutputFileName:=fileNamePdf, _
ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=False, _
OptimizeFor:=wdExportOptimizeForPrint, _
Range:=wdExportAllDocument, _
Item:=wdExportDocumentWithMarkup, _
IncludeDocProps:=False, _
CreateBookmarks:=wdExportCreateNoBookmarks, _
BitmapMissingFonts:=True

' https://docs.microsoft.com/en-us/office/vba/api/word.document.close(method)'
WordDoc.Close _
SaveChanges:=wdSaveChanges, _
OriginalFormat:=wdOriginalDocumentFormat

关于excel - 使用 vba 将 docx 导出为 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71008618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com