Можно ли запретить MS Access автоматически изменять выбранную вкладку ленты при использовании пользовательской ленты?

Когда пользовательский XML-файл пользовательского интерфейса используется для добавления нескольких настраиваемых вкладок ленты в Access, выбранная вкладка ленты меняется обратно на первую пользовательскую вкладку всякий раз, когда форма закрывается.

Мы программно загружаем пользовательскую ленту из VBA. Я создал accdb, который воспроизводит проблему. Папка также содержит XML-файл, содержащий определение ленты. Он должен находиться в том же каталоге, что и файл .accdb.

Проблему легко продемонстрировать:

  1. откройте базу данных RibbonTest.accdb,
  2. переключитесь на Tab2 и откройте Form2 с помощью кнопки на ленте и
  3. закройте Form2.

Обратите внимание, что вкладка Tab1 теперь активна.

Конечно, в этом небольшом примере db эта проблема кажется очень незначительной. Однако у нас есть очень большой проект с множеством настраиваемых вкладок, каждая из которых содержит множество групп и кнопок.Наших пользователей очень расстраивает то, что они продолжают терять свое место на ленте каждый раз, когда закрывают форму.

Мы рассмотрели обходной путь, при котором мы программно сохраняем выбранную вкладку и восстанавливаем ее, когда считаем, что это необходимо. Однако сделать это надежно оказывается затруднительно. (Не существует API Office для такой автоматизации ленты, но эта статья помогла.)

Кто-нибудь еще сталкивался с этой проблемой? Вы нашли способ предотвратить автоматическую смену вкладки?

Редактировать: Похоже, что эта проблема появилась с исправлением, реализованным в Office 2010 SP1. (Извините, нет ссылки: не думаю, что у меня может быть больше двух.) Проблема отсутствует в версии RTM. Список исправлений для SP1 включает следующее: «Доступ не активирует и не возвращает пользователя на правильную вкладку ленты для ранее открытого объекта базы данных, когда пользователь возвращается к этому объекту». Кажется, они пытались исправить использование свойства Form.RibbonName (которое поддерживает контекстные ленты), но в процессе сломали ленту по умолчанию.

6
задан Olly 20 June 2012 в 14:05
поделиться