【问题标题】:Accessing Excel file from word macro从 word 宏访问 Excel 文件
【发布时间】:2018-02-05 15:59:34
【问题描述】:

我正在尝试从 Word 宏打开一个 Excel 文件,并访问 Excel 文件中的数据。但是,我只能定义 exWb 并且遇到上面的错误。我的代码是:

Sub mySub()

    Dim objExcel As Object
    Set objExcel = CreateObject("Excel.Application")

    Dim exWb As Excel.Workbook
    'Dim exWb As Object
    'Set exWb = CreateObject("Excel.Workbook")

    ...

End Sub

问题在于

Dim exWb As Excel.Workbook

我得到错误:

Compile error: User-defined type not defined

或者

Dim exWb As Object
Set exWb = CreateObject("Excel.Workbook")

我得到错误:

Run-time error '429':
ActiveX component can't create object

PC 上安装了 Excel 2007,我添加了对 Microsoft Office 12.0 对象库和 Microsoft ActiveX 数据对象 6.1 库的引用,但这没有帮助。

有人有什么建议吗?

【问题讨论】:

  • 添加对 Microsoft Excel XX 对象库的引用。另外,请阅读早期 VS 后期绑定。
  • 我添加了对 Office 对象库的引用,这不包含 Excel 吗?无论如何,我现在尝试添加 Excel 库,但没有帮助。
  • 不,Office 对象库不包含 Excel,它只包含一般的 Office 功能。通过使用适当的后期绑定或添加对 Excel 对象库的引用来解决此问题。没有第三种方法。你参考了哪个图书馆?这样做后会出现什么错误?
  • 就像我说的,谷歌“后期绑定 VBA”
  • 感谢 vacip,我添加了对 Microsoft Excel 12.0 对象库的引用,但仍然遇到与上述相同的错误。我现在试试看后期绑定。

标签: vba excel


【解决方案1】:

您可以做两件事中的任何一件。
1:
添加对 excel 对象库的引用(请参阅@DisplayName 的答案),并稍微重写您的代码:

Dim exApp As New Excel.Application
Dim exWb As Excel.Workbook
Set exWb = exApp.Workbooks.Add

这是早期绑定。优点是编写代码更容易,因为智能感知正在帮助您。缺点是如果有人尝试在不同的 Office 版本(例如 Excel 2013)中运行它,它将无法工作。

2:
不要添加引用,并使用此代码:

Dim exApp As Object
Set exApp = CreateObject("Excel.Application")

您正在尝试创建一个 Excel 应用程序。在此应用程序中,您要创建工作簿 (Set exWb = exApp.Workbooks.Add) 等。

这是后期绑定,在编码时会给您带来困难,但无论 Excel 版本如何,都可以使用。

我通常在早期绑定中编写代码,然后在完成后将代码重写为后期绑定。

【讨论】:

  • 感谢 vacip,很抱歉我花了这么长时间才这样做。
【解决方案2】:

您必须添加 Excel 库参考

在 VBA IDE 中,单击

  • 工具
  • 参考文献
  • 选择 Microsoft Excel XX.0 对象库
  • “好的”

【讨论】:

  • 我添加了对 Office 对象库的引用,这不包含 Excel 吗?无论如何,我现在尝试添加 Excel 库,但没有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多