【发布时间】:2019-02-28 17:07:22
【问题描述】:
我正在编辑一个项目并尝试获取当前通过单击表单的按钮运行的 VBA 函数,并通过宏运行它,以便我可以调用它以在 Excel 中运行。
当前子读取如下内容。
Public Sub Command42_Click()
'Clear All Tables
DoCmd.RunSQL "DELETE * FROM dbo_Tbl1"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl2"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl3"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl4"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl5"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl6"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl7"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl8"
Dim strSQL As String
Dim strLocalTable As String
'Data Download
With CurrentDb.QueryDefs("setup_PTQ")
.SQL = "select * from SQL_Server_tbl"
End With
strLocalTable = "dbo_tbl1"
CurrentDb.Execute "INSERT INTO " & strLocalTable & " SELECT * FROM setup_PTQ"
DoCmd.OpenQuery "qry_1"
DoCmd.Close acQuery, "qry_2"
End Sub
为了简洁起见,我已经缩短了代码,但是对于表 2 - 8 也重复了“数据下载步骤”。
此代码在 Access 表单按钮中运行良好,无需编辑。
当我将此代码复制到独立模块并运行它时,它也可以工作。
当我尝试在宏中调用新开发的模块时,我的问题就开始了。
我设置了一个运行代码步骤,输入新的函数名称(例如,我将Command42_Click() 更改为Test(),这就是我所说的),然后它返回一个错误。
会出现一个消息框,其中包含以下文字说明:
“你输入的表达式有一个 Microsoft Access 找不到的函数名”
然后告诉我错误号是2425,而参数"Test()" 是找不到的。
最终,我想在 Excel 中使用 .RunMacro VBA 表达式调用此宏,这样最终用户就不必接触 MS Access DB。
归根结底,我只是在寻找一种从 Excel 运行上述代码的方法,因此如果有人能提供比修复此错误更好的解决方案,我对此持开放态度。
提前谢谢你!
【问题讨论】: