我们从VBA程序中动态加载自定义功能区。我已经创建了一个可以重现此问题的accdb文件。该文件夹还包括一个包含功能区定义的XML文件。它必须与.accdb文件位于同一目录中。
该问题很容易演示:
1. 打开RibbonTest.accdb数据库, 2. 切换到Tab2并使用功能区上的按钮打开Form2 3. 关闭Form2。
注意,现在活动的是Tab1。
当然,在这个小示例数据库中,这个问题似乎非常微不足道。但是,我们有一个非常大的项目,其中包含许多自定义选项卡,每个选项卡都包含许多组和按钮。我们的用户发现每次关闭表单时都失去功能区选项卡上的位置非常令人沮丧。
我们研究了一个解决方法,即在我们认为需要时编程存储所选择的选项卡并恢复它。但是,要可靠地做到这一点似乎很困难。(虽然没有Office API可以像这样自动化功能区选项卡,但此文章对此有帮助)
是否有其他人遇到过这个问题?您是否找到了防止选项卡自动更改的方法?
编辑:似乎这个问题是在Office 2010 SP1中引入的修复程序。SP1的修复列表包括:“当用户返回到该对象时,Access不会激活或将用户返回到先前打开的数据库对象的正确功能区选项卡。”看起来他们试图修复Form.RibbonName属性的使用(它支持上下文功能区选项卡),但在处理过程中破坏了默认功能区选项卡。