用户定义的类型未定义 - 从Excel控制Word

时间:2012-07-30 20:13:47

标签: excel vba excel-vba ms-word excel-2007

我正在尝试做一些相对简单的复制并从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

2 个答案:

答案 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,它只引入了代码冗余

键入的变量将为您提供自动完成功能。