我正在尝试做一些相对简单的复制并从Excel 2007粘贴到Word 2007.我已经浏览了这个网站和其他人,并继续挂在同一个东西 - 第三行,下面的代码一直给予我是“用户类型注释定义”错误消息。我真的很困惑,因为我刚从另一个解决方案解除了这个问题(并且我尝试解除其他解决方案时遇到了类似的问题)。有人可以告诉我导致错误的原因,为什么?
Sub ControlWord()
' **** The line below gives me the error ****
Dim appWD As Word.Application
' Create a new instance of Word & make it visible
Set appWD = CreateObject("Word.Application.12")
appWD.Visible = True
'Find the last row with data in the spreadsheet
FinalRow = Range("A9999").End(xlUp).Row
For i = 1 To FinalRow
' Copy the current row
Worksheets("Sheet1").Rows(i).Copy
' Tell Word to create a new document
appWD.Documents.Add
' Tell Word to paste the contents of the clipboard into the new document
appWD.Selection.Paste
' Save the new document with a sequential file name
appWD.ActiveDocument.SaveAs Filename:="File" & i
' Close this new word document
appWD.ActiveDocument.Close
Next i
' Close the Word application
appWD.Quit
End Sub
答案 0 :(得分:9)
Tim Williams的评论中提到了这个答案。
为了解决此问题,您必须将Word对象库引用添加到项目中。
在Visual Basic Editor
内,选择Tools
然后References
并向下滚动列表,直至看到Microsoft Word 12.0 Object Library
。选中该框并点击Ok
。
从那一刻起,您应该在键入Word.
时启用自动完成功能,以确认参考设置已正确设置。
答案 1 :(得分:0)
根据What are the differences between using the New keyword and calling CreateObject in Excel VBA?,
使用无类型变量:
Dim appWD as Object
appWD = CreateObject("Word.Application")
或
通过Microsoft Word <version> Object Library
将对Tools->References...
的引用添加到VBA项目中,然后创建一个类型化变量并对其进行初始化with the VBA New
operator:
Dim appWD as New Word.Application
或
Dim appWD as Word.Application
<...>
Set appWd = New Word.Application
CreateObject
在此等同于New
,它只引入了代码冗余键入的变量将为您提供自动完成功能。