如何使用数据宏在 vba 中运行函数?

Posted

技术标签:

【中文标题】如何使用数据宏在 vba 中运行函数?【英文标题】:How to run function in vba using data macro? 【发布时间】:2015-07-02 06:11:00 【问题描述】:

我是 ms access 2013 中数据宏的新手,需要一些帮助。 所以让我们假设我有一个只有一个用户表的简单数据库。 当我更改表中的“年龄”字段时,我想运行一个外部 exe 文件(这就是为什么重要的原因)。 所以我在过去几天学习了这个主题并最终得到了这个: 1. 我在 ms 访问中构建了一个名为 RunMiniFix 的模块(MiniFix 是我要运行的 exe 文件的名称)。该模块使用 ShellExecute 函数,整个模块如下所示:

Option Compare Database
Const SW_SHOW = 1
Const SW_SHOWMAXIMIZED = 3

Public Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" 
  (ByVal hwnd As Long, _
   ByVal lpOperation As String, _
   ByVal lpFile As String, _
   ByVal lpParameters As String, _
   ByVal lpDirectory As String, _
   Optional ByVal nShowCmd As Long) As Long

Public Function RunMiniFix()
     Dim RetVal As Long
     On Error Resume Next
     RetVal = ShellExecute(0, "open", "C:\Program Files\MiniFix\MiniFix.exe", "<arguments>", _
                        "<run in folder>", SW_SHOWMAXIMIZED)
End Function

现在,当激活模块时,一切正常,exe文件正在运行。

    在 ms 访问中,我基于“If Then”语句构建了一个数据宏,询问 if [Users]![Age] > x 然后从调用 RunMiniFix 函数的动作目录中调用内置 RunCode 事件。 现在,在保存数据宏时,ms access 会弹出一个消息框,提示 Microsoft access 无法找到我在短语中提到的名称“Users”,并建议我在表单中查找正确的控件。 “表格”?是的,表格! 这个数据库不是基于表格的。我从来没有设计过任何图形用户界面。我没有要处理的按钮或单击事件。 我要问的是如何在修改 Age 字段时触发 RunMiniFix 模块。拜托,这很重要!

    谢谢你,

    奥伦。

【问题讨论】:

【参考方案1】:

请使用数据宏中操作列表中的SetLocalVar,并将表达式设置为您的函数名称。示例:

name: "test"
Expression: RunMiniFix()

【讨论】:

感谢哈桑,你帮了我很多。虽然我必须问,有没有办法在 ms access 2007 中做到这一点? 好的,现在我有另一个问题...我正在尝试使用 vb.net 中的 winform 应用程序更改访问数据库中的字段值。当该字段通过应用程序更改时,什么也没有发生。当我通过数据库手动更改字段时,它会触发该功能。为什么会这样,我该如何解决?非常感谢! 以编程方式编辑数据不会触发事件。

以上是关于如何使用数据宏在 vba 中运行函数?的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 宏在 excel 行中搜索字符串的完全匹配

使用 Excel VBA 宏在 Word 中查找和替换页脚文本

Excel VBA 一段宏在64位系统中运行会报错,32位系统运行完美,求解决方案?

使用 VBA 宏在 Word 中水平对齐(分布)图像

VBA 宏在保持顺序的同时查找特定字符串

如何在 Access VBA 中设置对正在运行的对象的引用