Как сохранить надстройку Excel с VBA - PullRequest
0 голосов
/ 15 мая 2018

У меня есть надстройка Excel, которая использует рабочий лист в своей рабочей книге для сохранения некоторых данных предпочтений (например, последнее использованное значение элемента управления refEdit в пользовательской форме).

Затем я сохраняю рабочую книгу надстройки, используя vba thisworkbook.save, когда настройки изменяются в пользовательской форме.

Я обнаружил, что это иногда создает файл xlsm в myDocuments вместо сохранения надстройки.-в месте (см. также копия надстройки Excel создается в моих документах после сохранения ).

Как сохранить надстройку на месте (в надстройкепапка ins) без создания копии?Примечание. activeworkbook.save не сработает, поскольку при этом сохраняется открытая книга, а не надстройка.

В качестве альтернативы я могу создать временный файл для предпочтений, но использование листов в книге надстроек кажется хорошим местом.хранить данные.

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Я нашел ответ: у пользователя было открыто две копии Excel (2016 и 2010). В результате файл надстройки был заблокирован одной из двух открытых копий Excel, а это означает, что вторая копия открыла надстройку только для чтения и не смогла сохранить изменения.

Редкая ошибка, которую я не предвидел. Я собираюсь переписать, чтобы сохранить настройки в файле% appdata%.

Я бы посоветовал людям избегать использования thisworkbook.save с надстройками.

Спасибо всем за помощь.

0 голосов
/ 15 мая 2018

Насколько я знаю, вы не можете сохранить файл как надстройку и использовать лист с файлом.
Файл надстройки - это файл только VBA.

Вы говорите, что хотите сохранить настройки на листе.Как насчет использования реестра?

Сохранение данных в реестре очень просто (на мой взгляд, на самом деле проще, чем ячейки).

Чтобы сохранить настройку:

SaveSetting "MyAddIn", "Settings", "Username", "BOB"

Приведенная выше строка создает значениев реестре Windows со значением «BOB» как «Имя пользователя».

Чтобы получить настройки из реестра, который вы используете:

Username = GetSetting("MyAddIn", "Settings", "Username")

Вы можете прочитать о методе здесь

Хорошая вещь о его сохраненииВ реестре против листа есть то, что вы не можете случайно удалить или манипулировать данными.

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