使用VBA使用Word控制Excel的麻烦;后期绑定和早期绑定不起作用

时间:2014-01-03 20:22:21

标签: vba excel-vba export-to-excel excel-2011 word-vba-mac

我无法使用自动化从Word控制Excel,这应该可以从GetObject函数中使用。

我正在使用Office 2011 for Mac。我的目标是从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

我去了 tools->引用并添加到Excel对象中,因此我不确定该程序的这个简单部分是否会起作用。

我很乐意,如果有人可以帮助我让这部分工作,理想情况下,我的程序部分将允许我收集工作簿的名称(通过输入框,获取输入文件的完整路径名称)然后控制那个工作簿。其他所有东西都在我的程序中运行,但是我无法在word和excel之间找到这个关键桥梁来运行。

1 个答案:

答案 0 :(得分: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