1

这似乎应该是一个简单的,但我被卡住了。

我在 Access 中运行一个 VBA 脚本,它在 Excel 中创建了一个 40 多页的报告。

我正在使用早期绑定创建一个 Excel 应用程序对象:

Public obj_xl As New Excel.Application

这是我如何引用对象的示例:

With obj_xl
  .Workbooks.Add
  .Visible = True
  .Sheets.Add
  .blahblahblah
End With

问题是程序变得太大,我需要将代码分解成单独的模块。

如果我尝试从与创建它的模块不同的模块引用 Excel 应用程序对象,则会引发错误(“不明确的名称”)。

我确信我可以用 Win API 做点什么,但这似乎有点过头了。

有什么想法吗?谢谢

4

2 回答 2

1

这是可能导致错误“名称不明确”的情况类型

Function Split(s As String) 
    MsgBox s 
End Function 
Function Split(s As String) 
    MsgBox s 
End Function 

我知道这个例子很简单,但您正在寻找的是一个具有相同名称的函数、一个对象和/或一个表单控件。

于 2012-08-01T21:16:46.753 回答
0

如果将声明转换为Global,则可以在所有模块中引用它。例如,在一个模块中,将其放在顶部:

Global obj_xl As Excel.Application

然后在另一个模块中,

Sub xx()
     Set obj_xl = New Excel.Application
     Debug.Print obj_xl.Name
End Sub
于 2012-08-01T21:27:07.100 回答