【问题标题】:access 2010 custom ribbon访问 2010 自定义功能区
【发布时间】:2013-05-07 16:17:03
【问题描述】:

我有一个调用 vba 命令的自定义功能区。当它发生时,我收到错误消息

Microsoft Access cannot run the macro or callback function [FUNCTION OR SUB]

[FUNCTION OR SUB] 是我正在调用的函数或子名称。

生成上述消息的代码示例如下:

Public Function OnButtonPress2(ctl As IRibbonControl)

    MsgBox "OnButtonPress2"

End Function

OnButtonPress2 在功能区的 XML 文件中被称为按钮的位置

onAction="OnButtonPress2

以上适用于宏,因此它可能不是功能区的 xml

======== 版本 2 我创建了一个新的简单测试数据库,其 XML 和模块如下所示:

各自的结果是:

Macro1 - 工作正常(它有一个弹出消息)

CommandOnAction2 - msgbox "编译此函数时出错"

OnButtonPress2 - msgbox "Microsoft Access 无法运行宏或回调函数 'OnButtonPress2'

在“Public gobjRibn As IRibbonUI”这一行上,IRibbonUI 不会自动完成,这让我相信有一个需要添加的参考

XML(功能区名称为 NewRibbon,设置为在启动时打开)

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="tab1" label="Your Custom Tab">

<group id="group1" label="Your Custom Group">
<button id="SampleButton" label="Macro1" onAction="Macro1" />
<button id="SampleButton2" label="CommandOnAction2" onAction="=CommandOnAction2()"  />
<button id="SampleButton3" label="OnButtonPress2" onAction="OnButtonPress2"  />
</group>
</tab>
</tabs>
</ribbon>
</customUI>

模块(名称为 modRibbon)

Option Compare Database

Public gobjRibn As IRibbonUI

Public Function CommandOnAction2(ByVal ctl As IRibbonControl)
    MsgBox "Function CommandOnAction2"
End Function

Public Sub OnButtonPress2(ByVal ctl As IRibbonControl)
    MsgBox " Sub OnButtonPress2"
End Sub

【问题讨论】:

    标签: vba ms-access ribbon


    【解决方案1】:

    我能够在 Access 2010 中重新创建您的问题,并且通过将 Function 更改为如下所示的 Sub 来让您的示例正常工作:

    Public Sub OnButtonPress2(ByVal control_ As IRibbonControl)
        MsgBox "OnButtonPress2"
    End Sub
    

    顺便说一句,在搜索有关此问题的信息时,我偶然发现了另一个论坛 here 上的帖子。在其中,Albert D. Kallal 讨论了使用 onAction="=MyPublicFunctionName()" 作为回调的替代方案;也许您会发现在某些情况下这很有用。

    【讨论】:

    • Gord,谢谢,我仍然遇到同样的问题,我在上面的 ====VERSION 2 下添加了一个新示例,结果。一个可能很关键的问题是声明中的 IRibbonUI 在“公共 gobjRibn As”之后不会自动完成 - 我可能缺少参考但不知道它应该是什么。
    • 您需要引用 MSO.DLL。例如,在具有 32 位 Office 2010 (=Office 14) 的 64 位计算机上:C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\MSO.DLL
    猜你喜欢
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2011-04-18
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多