カスタムUIXMLファイルを使用してAccessに複数のカスタムリボンタブを追加すると、フォームを閉じるたびに、選択したリボンタブが最初のカスタムタブに戻ります。
VBAからプログラムでカスタムリボンをロードします。問題を再現するaccdbを作成しました。このフォルダーには、リボン定義を含むXMLファイルも含まれています。.accdbファイルと同じディレクトリにある必要があります。
問題は簡単に証明できます。
- データベースRibbonTest.accdbを開き、
- Tab2に切り替え、リボンのボタンを使用してForm2を開き、
- Form2を閉じます。
Tab1がアクティブになっていることに注意してください。
もちろん、この小さな例のデータベースでは、この問題は非常に小さいようです。ただし、非常に大規模なプロジェクトがあり、それぞれに多数のグループとボタンを含む多数のカスタムタブがあります。私たちのユーザーは、フォームを閉じるたびにリボン上の位置を失い続けることに非常に苛立ちを感じています。
選択したタブをプログラムで保存し、必要と思われるときに復元する回避策を調査しました。ただし、これを確実に行うことは困難です。(このようなリボンを自動化するためのOffice APIはありませんが、この記事は役に立ちました。)
他の誰かがこの問題に遭遇しましたか?タブが自動的に変更されないようにする方法を見つけましたか?
編集:この問題は、Office2010SP1で実装された修正で発生したようです。(申し訳ありませんが、リンクはありません。2つ以上持つことはできないと思います。)この問題は、RTMバージョンにはありません。SP1の修正リストには、次の内容が含まれています。「ユーザーがそのオブジェクトに戻ったときに、Accessは、以前に開いたデータベースオブジェクトの正しいリボンタブをアクティブ化または戻しません。」Form.RibbonNameプロパティ(コンテキストリボンをサポート)の使用を修正しようとしたようですが、その過程でデフォルトのリボンが壊れています。