6

(клонирование из вопроса о SO) Я создал функцию в VBA. Я хочу, чтобы Excel 2007 отображал автозаполнение при записи этой функции в Excel ячейки. Подробно как

Как использовать функцию автозаполнения для функции VBA в Excel 2007 с надстройкой Excel (.xlam)?

пс.

В Excel 2010 автозаполнение работает

В Excel 2007 с таблицей Excel с поддержкой макросов (.xlsm) работает автозаполнение. Тестовый файл здесь.

Но в Excel 2007 с надстройкой Excel (.xlam) автозаполнение НЕ работает. Тестовый файл здесь.

1 ответ1

1

На основании ссылки Шона Чешира на ответ Майклса:

«Я нашел пример в Службах разработки приложений JKP, первоначально найденный Лораном Лонгром. Одна оговорка объясняется ниже:

Недостаток этого трюкового метода в том, что на самом деле перерегистрируют функцию внутри используемой библиотеки DLL, которая может использоваться любой программой.

http://www.jkp-ads.com/Articles/RegisterUDF01.asp

Это решение только регистрирует / отменяет регистрацию UDF, но пользователю все равно придется сохранить книгу в формате .xlam и установить надстройку. Я использовал следующий код для автоматической установки текущей книги как надстройки Excel (если вы собираетесь обновлять надстройку, вам нужно будет добавить несколько сообщений об ошибках, чтобы определить, установлено ли надстройка уже).

Сохраняет текущую книгу в виде файла .xlam
sFile = Приложение.LibraryPath & "\" & "name_of_addin" & ".xlam"
ThisWorkbook.SaveAs sFile, 55
ThisWorkbook.IsAddin = True

Добавляет временную рабочую книгу
Workbooks.добавлять

Устанавливает надстройку
Установите oAddin = AddIns.Добавить (sFile, False)
oAddin.Установлено = True

Закрывает временную рабочую книгу
Workbooks (Workbooks.Count).близко
MsgBox («Установка прошла успешно. Пожалуйста, закройте Excel и перезапустите. ")

Закрывает книгу без сохранения
Рабочие книги (sFirstFile).Закрыть Ложь

Ссылка еще жива.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .