使用自定义功能区时,是否可以阻止MS Access自动更改选定的功能区选项卡?

Oll*_*lly 6 ms-access ribbon access-vba office-2010

使用自定义UI XML文件在Access中添加多个自定义功能区选项卡时,只要表单关闭,所选功能区选项卡就会更改回第一个自定义选项卡.

我们以编程方式从VBA加载自定义功能区.我创建了一个accdb来重现问题.该文件夹还包含一个包含功能区定义的XML文件.它必须与.accdb文件位于同一目录中.

问题很容易证明:

  1. 打开数据库RibbonTest.accdb,
  2. 切换到Tab2并使用功能区上的按钮打开Form2
  3. 关闭Form2.

请注意,Tab1现在处于活动状态.

当然,在这个小例子中db这个问题似乎很小.但是,我们有一个非常大的项目,包含许多自定义选项卡,每个选项卡包含许多组和按钮.我们的用户发现非常令人沮丧的是,他们每次关闭表单时都会在功能区上不断丢失位置.

我们调查了一种解决方法,我们以编程方式存储选定的选项卡,并在我们认为需要时将其恢复.然而,证明难以可靠地做到这一点.(没有像这样自动化功能区的Office API,但本文有所帮助.)

还有其他人遇到过这个问题吗?您是否找到了防止标签自动更改的方法?

编辑:似乎这个问题是在Office 2010 SP1中实现的修复程序中引入的.(对不起,没有链接:不要认为我可以有两个以上.)RTM版本中没有问题.SP1的修复列表包括:"当用户返回到该对象时,Access不会激活或将用户返回到先前打开的数据库对象的正确功能区选项卡." 看起来他们已经尝试修复Form.RibbonName属性(它支持上下文功能区)的使用,但在此过程中打破了默认功能区.

小智 6

这一行解决了这个问题:

<tab id="tabBogus" label="Bogus" visible="false"></tab>

只需将它作为您的第一个标签<tabs>.非常感谢Scott的潜在解决方案答案!! (尝试投票和/或评论,但刚刚注册,因此没有足够的声誉.)这节省了工作时间(或几天)与其他复杂的解决方法!谢谢!


小智 4

潜在的解决方法

我偶然发现对我有用的方法是使用可见标签隐藏 XML 中的第一个选项卡。我没有对其进行太多测试,但我有一个隐藏的标准“主页”选项卡的副本(不知道它是否需要填充选项卡)。在我看来,由于当您关闭表单时 Access 实际上无法激活隐藏的选项卡,因此它保留在当前选定的选项卡上。

我不知道 Access 2013 中是否修复了此问题,但希望该信息还不算太晚,无法为某人所用。