Как заставить надстройку Excel загружать настройки по умолчанию при первом запуске - PullRequest
0 голосов
/ 04 апреля 2020

Я разрабатываю небольшую надстройку для Excel для внутреннего использования компанией. У меня проблема с настройками для некоторых процедур.

Некоторые переменные внутри моих макросов имеют изменяемые настройки, например, макрос, который изменяет числовой формат на определенный пользователем, или ярлыки для некоторых из макросы. У меня есть пользовательские формы для этих настроек, и я сохраняю / читаю их в / из Windows реестра, используя эти формы. Пользователи также могут устанавливать настройки по умолчанию - это простая система с процедурами SaveSetting / GetSetting.

Однако у меня проблема с загрузкой настроек при запуске. Мне нужно, чтобы надстройка загружала настройки DEFAULT при первом запуске, а затем настройки USER при следующем запуске надстройки. Я знаю, как загрузить настройки по умолчанию, но я не могу найти способ загрузить настройки по умолчанию только один раз, а затем загрузить измененные пользователем настройки (измененные или стандартные, в зависимости от их выбора через упомянутые пользовательские формы). Сейчас я знаю только способ загрузки настроек по умолчанию КАЖДЫЙ РАЗ, когда надстройка загружается ...

Кто-нибудь сталкивался с такой проблемой и готов помочь?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2020

Когда надстройка загружается впервые, она создает ключ в реестре со значением, скажем, True. При загрузке надстройки в событии Workbook_Open() этот указанный ключ c проверяется. Если он не существует (или это False, если вам когда-нибудь потребуется сбросить надстройку), будут загружены настройки по умолчанию ...

Private Sub Workbook_Open()
 Dim regValue As String, MyApp As String, myKey As String, keyValue As String
  MyApp = "MyAddin": myKey = "add_default": keyValue = "Default"
  regValue = GetSetting(MyApp, myKey, keyValue, "No value")
  If regValue <> "No value" Then
        If CBool(regValue) = True Then GoTo Continue
        'load default settings
        SaveSetting MyApp, myKey, keyValue, "True"
  Else
        'load default settings
        SaveSetting MyApp, myKey, keyValue, "True"
  End If
Continue:
  'your code without loading default
  '.....
End Sub
0 голосов
/ 04 апреля 2020

Я пока не могу комментировать ваше сообщение из-за моей текущей привилегии.

Но, глядя на вашу проблему:

  1. В первый раз вы можете сохранить настройки по умолчанию в надстройке. Сам вы будете звонить во время события ThisAddIn_Startup, которое загружает Добавление.
  2. Затем вы сохраняете настройку двумя способами в зависимости от необходимости: 2.1. Если это общие настройки, которыми обмениваются другие лица, лучше использовать INI-файлы для сохранения настроек, когда, например, администратор установит начальные настройки. 2.2. Если это каждая настройка пользователя, то лучше хранить их в реестре: 2.2.a. Где вы создаете ключи на первой настройке 2.2.b. Сохраните пользовательские настройки с использованием недавно созданных ключей.
  3. Затем при следующей загрузке приложения вы используете ThisAddIn_Startup, чтобы проверить, были ли ключи уже созданы: 3.1. Если это ДА, то вы просто читаете сохраненные настройки. 3.2. Если НЕТ, вы снова начинаете с шага № 2.

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...