8

我正在尝试从 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
4

2 回答 2

13

Tim Williams在评论中提到了这个答案。

为了解决这个问题,您必须将 Word 对象库引用添加到您的项目中。

在 中Visual Basic Editor,选择ToolsthenReferences并向下滚动列表,直到看到Microsoft Word 12.0 Object Library。选中该框并点击Ok

从那一刻起,您应该在键入Word.以确认参考设置正确时启用自动完成。

于 2013-07-01T19:24:32.677 回答
2

根据在 Excel VBA 中使用 New 关键字和调用 CreateObject 有什么区别?, 任何一个

  • 使用无类型变量:

    Dim appWD as Object
    appWD = CreateObject("Word.Application")
    

或者

  • 通过添加Microsoft Word <version> Object Library对 VBA 项目的引用Tools->References...,然后创建一个类型化变量并使用 VBANew运算符对其进行初始化:

    Dim appWD as New Word.Application
    

    或者

    Dim appWD as Word.Application
    <...>
    Set appWd = New Word.Application
    
    • CreateObject相当于New这里,只是引入了代码冗余

类型化变量将为您提供自动完成功能。

于 2017-09-01T17:27:26.587 回答