excel - 使用 VBA 通过 Word 控制 Excel 时遇到问题;后期绑定(bind)和早期绑定(bind)不起作用

标签 excel vba macos export-to-excel excel-2011

我在使用 Word 中的自动化控制 Excel 时遇到问题,而这应该可以通过 GetObject 函数实现。

我使用的是 Office 2011 for Mac。我的目标是从 Word 文档中获取信息,并将其插入到 Excel 工作簿中最新的此类条目之后。 doc这个词是一个契约(Contract)生成器。每个工作簿将包含大约 30 个相关契约(Contract)的详细信息。我想使用的逻辑是允许用户输入工作簿的名称,然后 VBA 将获取完整路径名和路径,然后能够控制工作簿。然而,我无法让一个更简单的案例发挥作用。

首先,我什至无法使用 word 来控制当前存在的 excel 实例(尽管 CreateObject("Excel.Application") 确实有效。我尝试了早期绑定(bind)并得到了:

automation error (91)

这是产生该结果的代码:

Option Explicit

Sub WorkOnAWorkbook()

   Dim Oxl As Excel.Application
   Dim owB As Excel.Workbook

   Set Oxl = GetObject(, "Excel.Application")
   Set owB = Oxl.Workbooks.Open(fileName:="Macintosh HD:Users:User:Desktop:Test.xlsx")

End Sub

我还尝试使用后期绑定(bind),这给了我:

error 424 (object required)

这是产生该结果的代码:

Option Explicit

Sub WorkOnAWorkbook()

    Dim Oxl As object
    Dim owB As object

    Set Oxl = GetObject(, "Excel.Application")
    Set owB = Oxl.Workbooks.Open(fileName:="Macintosh HD:Users:User:Desktop:Test.xlsx")

End Sub

我转到工具->引用并添加了 Excel 对象,因此我不确定程序的这个简单部分是否无法工作。

如果有人可以帮助我让这部分工作,并且理想情况下,我的程序部分将允许我收集工作簿的名称(通过输入框,获取输入文件的完整路径名称),我会很高兴然后控制该工作簿。其他一切都可以在我的程序中运行,但我无法让 Word 和 Excel 之间的这个关键桥梁发挥作用。

最佳答案

尝试:

Set owB = Oxl.Workbooks.Open(FileName:="\Macintosh HD\Users\User\Desktop\Test.xlsx")

或者如果这不起作用,请尝试:

Dim myFileName As String
myFileName = Application.GetOpenFilename
Debug.Print myFileName

If myFileName <> "" Then
    Set owB = Oxl.Workbooks.Open(FileName:=myFileName)
End If

此外,对于早期绑定(bind),如果您在 Dim 语句中使用 New 关键字,则不需要 GetObject:

Sub WorkOnAWorkbook()

   Dim Oxl As New Excel.Application
   Dim owB As Excel.Workbook

   'Not needed Set Oxl = GetObject(, "Excel.Application")
   Set owB ...

End Sub

关于excel - 使用 VBA 通过 Word 控制 Excel 时遇到问题;后期绑定(bind)和早期绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20912078/

相关文章:

excel - 安装多个证书时使用 "setClientCertificate"

css - 像谷歌地图一样在全屏网络应用程序上防止 "overscroll"

cocoa - 转换为 JPEG 时我应该如何考虑 CGImageAlphaInfo?

arrays - TRANSPOSE 公式数组

excel - 将函数应用于范围内的每个元素

Excel宏来比较行

excel - 如何删除 ListObject 中的事件表行?

arrays - 范围联合无序

vba - 从复制的工作表中提取/更改/删除数据

java - 使用JNA从控制台获取字符而无需输入