onLoad 时将参数传递到功能区

pass parameter into ribbon when onLoad

我想要两个版本的ribbon。一种用于开发人员,一种用于普通用户。对于开发者版本,自定义组将被添加到现有功能区,这可以通过

完成
<ribbon startFromScratch="false">

对于普通用户,自定义组现有功能区将不可用,这可以通过

完成
<ribbon startFromScratch="true">

我可以通过 USysRibbons 中的两条记录实现它 table 并在 OnLoad 表单中加载不同的记录。 我可以只通过将标志传递给 XML 并使用一些逻辑行来设置它来获得一条记录吗?

类似于:

如果开发人员 = true 则

<ribbon startFromScratch="false">

其他

<ribbon startFromScratch="true">

如果

结束

我认为您无法通过使用 USysRibbons 的内置逻辑来实现此目的 table。 除了使用 USysRibbons,您还可以使用另一个 table(或只是重命名)来存储您的功能区 XML。然后编写一个 VBA 程序,从您自己的 table 加载 XML 并调用 Application.LoadCustomUI 方法以将您的 XML 用于功能区。在该过程中,您可以按照自己喜欢的任何方式处理和修改功能区 XML。 AutoExec 宏必须调用该过程以在启动时将功能区放置到位。

在您的情况下,您可以使用如下代码:

yourRibbonXML = ... ' ( load xml from your table into yourRibbonXML )

If Developer = True then
    yourRibbonXML = Replace(yourRibbonXML, "startFromScratch=""true""", "startFromScratch=""false""")
End if

Application.LoadCustomUI "yourRibbonName", yourRibbonXML

查看此 link 以获得更详细的解释: http://www.accessribbon.de/en/?Access_-_Ribbons:Load_Ribbons_Into_The_Database:..._Using_Any_User_Table