3

我在使用自动化从 Word 控制 Excel 时遇到问题,这应该可以通过该GetObject功能实现。

我正在使用适用于 Mac 的 Office 2011。我的目标是从 word 文档中获取信息,并在最近的此类条目之后将其插入到 excel 工作簿中。doc这个词是一个合同生成器。每个工作簿将包含大约 30 个相关合同的详细信息。我想使用的逻辑是允许用户输入工作簿的名称,然后 VBA 将获得完整的路径名称和路径,然后就能够控制工作簿。但是,我无法制作更简单的案例。

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

自动化错误 (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

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

错误 424(需要对象)

这是产生该代码的代码:

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 之间的这个关键桥梁发挥作用。

4

1 回答 1

3

尝试:

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

同样对于早期绑定,如果您在 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
于 2014-01-06T03:19:00.933 回答