首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过宏运行MS Access 2016 VBA函数,然后通过Excel运行该宏

通过宏运行MS Access 2016 VBA函数,然后通过Excel运行该宏
EN

Stack Overflow用户
提问于 2019-02-28 17:07:22
回答 3查看 2.1K关注 0票数 0

我正在编辑一个项目,并尝试接受一个VBA函数,该函数目前是通过单击窗体按钮来运行的,并通过宏运行,这样我就可以调用它在Excel中运行。

当前的子项目如下所示。

代码语言:javascript
复制
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 form按钮中工作得很好,不需要编辑。

当我将此代码复制到独立模块并运行它时,它也能工作。

当我尝试在宏中调用新开发的模块时,我的问题就开始了。

我设置了一个运行代码步骤,输入新的函数名(例如,我将Command42_Click()更改为Test(),这就是我所调用的),然后它返回一个错误。

出现一个消息框,其文本声明:

“您输入的表达式有一个Microsoft找不到的函数名”

然后告诉我错误号是2425,参数"Test()"是找不到的。

最终,我想用Excel中的.RunMacro VBA表达式调用这个宏,这样最终用户就不必碰macro。

最后,我只是在寻找一种从Excel运行上面的代码的方法,所以如果有人能够提供一个比修复这个错误更好的解决方案,我是开放的。

提前谢谢你!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-28 18:13:59

您需要将您的Public Sub更改为Public Function (或者仅仅是Function,因为公共是模块中的默认作用域),以便能够在Macro的RunCode操作中对其进行评估。

来自MS Access文档

可以在Access桌面数据库中使用RunCode宏操作来调用(VBA) 函数过程。

或者,您可以创建一个简单地调用Sub的函数,例如:

代码语言:javascript
复制
Function Test()
    Call Command42_Click
End Function

然后从宏的RunCode操作调用此函数。

票数 1
EN

Stack Overflow用户

发布于 2019-11-27 22:53:04

不要使用DoCmd.RunMacro

不要使用宏

使用appAccess.Run "MyNewModule.Command42_Click“

.Run的另一个优点是它运行子例程和函数。

票数 0
EN

Stack Overflow用户

发布于 2020-12-14 09:08:05

试试这个:

  1. 在设计模式下打开RunCode宏。
  2. 单击以编辑函数名
  3. 按Ctrl+F2打开表达式生成器对话框
  4. 在表达式生成器中,导航到您的函数,单击数据库文件的名称、模块的名称,然后单击函数的名称。

一开始,我得到了您描述的相同的错误2425。在通过表达式生成器选择函数之后,它运行得很顺利。我的Access数据库文件有一个.mdb扩展名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54930851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档