我试图让Excel脚本创建文档文件并将其另存为pdf文件。创建文档没有问题,但找到正确的代码将其保存为pdf文件似乎是一个问题。我已经在互联网上搜索了很多手册和相同问题的答案,这些都归结为相同的代码:
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
不知何故,似乎没有为我做这个伎俩,因为它给了我错误"未找到命名参数"。这是我的脚本(我已经忽略了不相关的行,我确定路径和文件名存储正确)。
'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
我在这里做错了什么?
答案 0 :(得分:2)
它不起作用的原因是Excel不知道Word的任何常量值是什么,如wdExportAllDocument
或wdExportCreateNoBookmarks
。
为了使代码有效,您必须在项目中添加引用,方法是单击"工具" ---> "参考..."然后单击" Microsoft Word 14.0对象库"旁边的复选框。然后,您可以使用在问题顶部发布的清理版代码。请记住,ActiveDocument
中的全局变量不存在于Excel中,您必须使用objWord.ActiveDocument
。此外,对于您的情况,我建议您将代码切换为使用早期绑定(请参阅here以获取差异的描述),以便您具有智能感知功能。这可以防止由拼写错误引起的麻烦错误。
答案 1 :(得分:0)
谢谢Blackhawk!
与此同时,我找到了另一种解决方案。我需要另一个Object(objWordDoc)变量,我用“with objWord.activedocument”代替:
Set objWordDoc = objWord.Documents.Add(strDocToOpen)
With objWordDoc
然而,您的建议将来肯定会派上用场!