VBA-从Excel将Word文档另存为pdf-找不到命名参数
我试图让Excel脚本创建一个文档文件并将其保存为pdf文件。创建文档没有问题,但是找到正确的代码将其保存为pdf文件似乎是一个问题。我在互联网上搜索过,同一个问题的许多手册和答案都归结为相同的代码:VBA-从Excel将Word文档另存为pdf-找不到命名参数,excel,vba,pdf,ms-word,Excel,Vba,Pdf,Ms Word,我试图让Excel脚本创建一个文档文件并将其保存为pdf文件。创建文档没有问题,但是找到正确的代码将其保存为pdf文件似乎是一个问题。我在互联网上搜索过,同一个问题的许多手册和答案都归结为相同的代码: ActiveDocument.ExportAsFixedFormat OutputFileName:= _ ActiveDocument.Path & "\" & ActiveDocument.Name & ".pdf", ExportFormat:= _ wdExport
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
ActiveDocument.Path & "\" & ActiveDocument.Name & ".pdf", ExportFormat:= _
wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
不知何故,这似乎对我不起作用,因为它给了我一个错误“未找到命名参数”。这是我的脚本(我省略了不相关的行,我确信路径和文件名存储正确)
我做错了什么?它不起作用的原因是Excel不知道Word的任何常量值是什么,比如
wdExportAllDocument
或wdExportCreateNoBookmarks
为了使代码正常工作,您必须通过单击“工具”-->“引用…”,然后单击“Microsoft Word 14.0对象库”旁边的复选框,在项目中添加一个引用。然后,您可以使用张贴在问题顶部的代码的清理版本。请记住,Excel中不存在像
ActiveDocument
这样的全局变量,您必须使用objWord.ActiveDocument
。另外,对于您的情况,我建议您将代码切换为使用早期绑定(请参阅以了解差异的描述),这样您将拥有intellisense。这可以防止拼写错误引起的麻烦错误。它不起作用的原因是Excel不知道Word的任何常量值,如wdExportAllDocument
或wdExportCreateNoBookmarks
为了使代码正常工作,您必须通过单击“工具”-->“引用…”,然后单击“Microsoft Word 14.0对象库”旁边的复选框,在项目中添加一个引用。然后,您可以使用张贴在问题顶部的代码的清理版本。请记住,Excel中不存在像
ActiveDocument
这样的全局变量,您必须使用objWord.ActiveDocument
。另外,对于您的情况,我建议您将代码切换为使用早期绑定(请参阅以了解差异的描述),这样您将拥有intellisense。这可以防止拼写错误引起的麻烦错误。它不起作用的原因是Excel不知道Word的任何常量值,如wdExportAllDocument
或wdExportCreateNoBookmarks
为了使代码正常工作,您必须通过单击“工具”-->“引用…”,然后单击“Microsoft Word 14.0对象库”旁边的复选框,在项目中添加一个引用。然后,您可以使用张贴在问题顶部的代码的清理版本。请记住,Excel中不存在像
ActiveDocument
这样的全局变量,您必须使用objWord.ActiveDocument
。另外,对于您的情况,我建议您将代码切换为使用早期绑定(请参阅以了解差异的描述),这样您将拥有intellisense。这可以防止拼写错误引起的麻烦错误。它不起作用的原因是Excel不知道Word的任何常量值,如wdExportAllDocument
或wdExportCreateNoBookmarks
为了使代码正常工作,您必须通过单击“工具”-->“引用…”,然后单击“Microsoft Word 14.0对象库”旁边的复选框,在项目中添加一个引用。然后,您可以使用张贴在问题顶部的代码的清理版本。请记住,Excel中不存在像ActiveDocument
这样的全局变量,您必须使用objWord.ActiveDocument
。另外,对于您的情况,我建议您将代码切换为使用早期绑定(请参阅以了解差异的描述),这样您将拥有intellisense。这可以防止拼写错误引起的麻烦错误。谢谢Blackhawk
与此同时,我找到了另一个解决办法。我需要另一个对象(objWordDoc)变量,我已将“With objWord.activedocument”替换为:
不过,你的建议将来一定会派上用场的 谢谢黑鹰
与此同时,我找到了另一个解决办法。我需要另一个对象(objWordDoc)变量,我已将“With objWord.activedocument”替换为:
不过,你的建议将来一定会派上用场的 谢谢黑鹰
与此同时,我找到了另一个解决办法。我需要另一个对象(objWordDoc)变量,我已将“With objWord.activedocument”替换为:
不过,你的建议将来一定会派上用场的 谢谢黑鹰
与此同时,我找到了另一个解决办法。我需要另一个对象(objWordDoc)变量,我已将“With objWord.activedocument”替换为:
不过,你的建议将来一定会派上用场的
'Dim Word formfield values
Dim objWord As Object
Dim strDocName As String, strDocName1 As String, strDocName2 As String
Dim strMyPath As String
'Declare Word variables
Set objWord = CreateObject("word.application")
objWord.Visible = True
With objWord.activedocument
'fill in a bunch of formfields
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strMyPath & "\" & strDocName2, _
OpenAfterExport:=False
.Close
End With
Set objWordDoc = objWord.Documents.Add(strDocToOpen)
With objWordDoc