MS Access RunCode宏找不到我的程序

时间:2013-06-21 22:01:12

标签: ms-access access-vba

由于我无法在任何地方找到解决方案,因此我只发布此内容。我终于弄明白了。有点傻。

在Access宏中使用RunCode属性时,我试图从我的全局模块运行Sub。我收到错误“您输入的表达式具有数据库找不到的函数名称。”我无法弄清楚问题是什么。我遵循了发布在这个问题上的每个人的建议,主要是以下内容:

  1. 在程序名称
  2. 末尾使用()
  3. 请勿在程序名称
  4. 之前使用“=”

    仍然无法正常工作!

10 个答案:

答案 0 :(得分:33)

然后我仔细阅读了错误消息。它提到它无法找到FUNCTION名称。显然,RunCode属性特别需要“Function”而不是Sub。所以,我只是简单地将Sub改为Function,它运行良好!

希望这有帮助。

答案 1 :(得分:4)

另一个对我有用的解决方案:

模块名称不能与模块中的过程名称相同。

答案 2 :(得分:2)

我遇到了与错误消息类似的问题。我的VBA代码有以下声明:

private function MyFunction()

....

end function

我删除了private声明以让Macro Runcode执行MyFunction()

例如:

Function MyFunction()

End Function

答案 3 :(得分:0)

Access 2013:一个从RunCode调用MyFunction()的函数,其中MyFunction不存在,这给了我错误2425.然而,上述所有工作对我来说都没有,当函数存在并且是公共的时我仍然得到错误号2001 。数据库位于可信位置。没有编译错误,但MyFunction中的某些东西不起作用,即

DoCmd.ShowAllRecords 
在GoToControl选择我的子表单之后

。真正的问题是我的代码删除了VBA过滤器。 ShowAllRecords手册似乎表明这应该有效,但用

替换DoCmd.ShowAllRecords
DoCmd.RunCommand acCmdRemoveFilterSort 

解决了我的问题。

答案 4 :(得分:0)

除了调用VBA函数之外,数据库似乎还需要包含对象。没有其他对象(特别是我的情况下的表),无法在调用环境中找到该函数(例如Excel VBA)。

答案 5 :(得分:0)

我想感谢上面的John Tipton并添加一些新信息。我正在使用MS Access 2016并开始遇到这个问题所以这个问题仍然是它丑陋的头脑。为了我的工作,函数名称和宏名称必须不同,并且在函数myFunc()之后的代码中,名称必须与您在Access侧栏中看到的模块名称不同。另一件奇怪的事。当我在Macro中选择RunCode时,它会向我显示我试图选择的功能(它不会显示Sub VBA模块)但是当我选择它时,Macro将其编码为具有单个左键的函数名称" ("。这是在Windows 8 Pro计算机上运行的。

答案 6 :(得分:0)

我的错误是将函数放在类模块而不是常规模块中。

答案 7 :(得分:0)

Access Office 365:当从VBA中调用并用于宏时,我的子例程可以工作。将功能文本移到单独的模块中,并单独保存。给模块(而不是类)一个唯一的名称。

答案 8 :(得分:0)

我从网上借用了一个“模板”基本文本作为外壳。当我在代码部分重命名该函数时,MSAccess / Vbasic并未在“模块”框的函数标题中显示名称更改,因此当我运行调用此函数的宏时,它说找不到。反复尝试修复。然后,我注意到vbasic的代码部分中的名称与函数对话框的标题不同。因此,我在标题框中手动更改了名称,并提示我保存所做的操作,现在可以使用了。也许这就是为什么蛇软件如此受欢迎。 :)

答案 9 :(得分:0)

我对app.Run("MyMacro")的VSTO C#调用突然停止工作,并且错误消息开始打印。 (“ Access找不到过程MyMacro。”)

我的机器上的问题是我的代码(连接到正在运行的Access实例)连接到其中没有该VBA宏的僵尸数据库实例。去搞清楚。僵尸实例未显示在任务栏,Alt-TAB显示或我使用控制台程序打印出的窗口列表中。

我发现它的方法是让我的VSTO代码打印出它正在连接的数据库的名称。 Access数据库是我当天早些时候一直在使用的数据库,没有错误。在尝试运行MyMacro之前的几个小时,我已经关闭了成功保存它的Access应用程序。

除了将VStudio升级到最新版本外,我想不出什么异常的方法。重新启动可能会解决问题。真是个奇怪的问题。