【问题标题】:Trouble Controlling Excel with Word using VBA; late binding and early binding aren't working使用 VBA 用 Word 控制 Excel 出现问题;后期绑定和早期绑定不起作用
【发布时间】:2014-01-21 14:53:26
【问题描述】:

我在使用自动化从 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->references 并添加了 Excel 对象,所以我不确定程序的这个简单部分是否行不通。

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

【问题讨论】:

  • 谢谢。我尝试了一些新标签。

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


【解决方案1】:

试试:

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

【讨论】:

  • 谢谢你。我实际上想出了另一种解决方法。抱歉,我实际上还没有足够的声望来支持你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
相关资源
最近更新 更多