使用VBA,从MSExcel模块调用位于MSAccess模块中的Sub

问题描述 投票:0回答:2

似乎将其提交给副驾驶,让它爬行并且从不回答 这就是我发这篇文章的原因

从MSExcel端来看,代码如下:

Public Function OpenADMINDatabase() As Boolean

Dim retCode As Boolean
On Error GoTo ErrorHandler
    Set oMSAccessApplication = CreateObject("Access.Application")
    oMSAccessApplication.Visible = True
    If ((GetADMINSourceDatabasePath <> "") And (Not IsNull(oMSAccessApplication))) Then
        Call oMSAccessApplication.OpenCurrentDatabase(GetADMINSourceDatabasePath)
        oMSAccessApplication.Run "TestIt"
        retCode = True
    Else
        retCode = False
    End If
    GoTo ExitFunc
    
ErrorHandler:
    Debug.Print Error
    retCode = False
    
ExitFunc:
    OpenADMINDatabase = retCode
End Function

数据库已打开并可见。

从 MSAccess 端来看,代码位于名为

modADMIN_Main
的模块中,定义如下:

Public Sub TestIt()
    MsgBox "Hello World From MS Access Database", vbOKOnly
End Sub

执行 MSExcel 代码时,我得到的只是以下错误消息: Microsoft Access 找不到过程“TestIt”。

对 TestIt 和 modADMIN_Main.TestIt 的调用都不起作用。

太棒了,发生了什么!!!

过去一直在工作

excel vba ms-access
2个回答
0
投票

使用早期绑定(添加对 Access Object Libriray 的引用):

dim accessapp as new access.application
with accessapp
    .visible = true
    .opencurrentdatabase (...)
    .run "testit"
    .quit
end with

0
投票

此案已结。事实上,由于模块 modADMIN_Main 中的函数定义错误,导致该模块无效,因此无法访问其中的 Sub。之前它一直有效,直到我添加了新功能

enter image description here

MSAccess 没有以可见的方式发出代码错误信号。对这些人感到抱歉;-)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.