MS Access VBA:参考在单独的模块中创建的Excel应用程序对象

时间:2012-08-01 21:09:41

标签: vba excel-vba access-vba excel

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

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

我正在使用Early Binding创建一个Excel应用程序对象:

Public obj_xl As New Excel.Application

以下是我如何引用该对象的示例:

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

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

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

我确信我可以使用Win API做些什么,但这似乎有点矫枉过正。

有什么想法?谢谢

2 个答案:

答案 0 :(得分:1)

这种情况会导致错误“不明确名称”

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

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

答案 1 :(得分:0)

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

Global obj_xl As Excel.Application

然后在另一个模块中,

Sub xx()
     Set obj_xl = New Excel.Application
     Debug.Print obj_xl.Name
End Sub