XLAM / XLA Addins: есть ли лучший способ? - PullRequest
7 голосов
/ 20 апреля 2011

Этот пост об установке XLAM без создания ссылок. (Все ненавидят ссылки). Рассмотрим тривиальное дополнение:

    Public Function UDF_HELLO(x)
        UDF_HELLO = "Hello " & x
    End Function

Поместите этот код и ничего больше в модуль и сохраните его как «Hello.xlam» на рабочем столе (а НЕ в папке надстроек Excel по умолчанию). Затем, пока HELLO.XLAM еще открыт, создайте новую книгу XLSX с формулой

      =UDF_Hello("world")

в ячейке A1, которая просто отображает «Hello world» в этой ячейке. Сохраните книгу и выйдите из Excel. Теперь, если вы снова откроете книгу без XLAM, Excel будет жаловаться на «ссылки на другие источники ...». Если вы нажмете «Обновить» или «Не обновлять», Excel изменит формулу в ячейке A1 следующим образом:

    ='C:\Documents and Settings\tpascale\Desktop\Hello.xlam'!UDF_Hello("world")

Очень часто эта «принудительная связь» НЕ желательна. В моей вычислительной среде много специального анализа, и нет смысла навязывать режим установки для каждого XLAM, который мы собираем вместе, чтобы решить проблему дня. Я просто хочу раздать XLAM-файлы пользователям и позволить этим пользователям открывать их, когда они им нужны, БЕЗ необходимости беспокоиться о малейшем ошибочном шаге, который может привести к искажению их формул.

ВОПРОС:

Есть ли способ указать Excel, чтобы НИКОГДА не создавать внешние ссылки для UDF, и просто использовать UDF, если они загружены, и возвращать #VALUE в противном случае?

Ответы [ 3 ]

4 голосов
/ 20 апреля 2011

Я не знаю, как обойти это с помощью надстроек .xla / .xlam.

Но эта проблема не возникает с надстройками .xll. Их можно создать в C с помощью Excel 2010 SDK или на управляемых языках, таких как VB.NET или C #, с использованием бесплатной библиотеки Excel-DNA .

(Отказ от ответственности: я разработчик Excel-DNA. Эта проблема является одной из причин, по которым я решил использовать интерфейс .xll для создания управляемых надстроек UDF.)

1 голос
/ 20 апреля 2012

Это должно помочь решить вашу проблему, хотя и не указывает Excel на внешние ссылки. Я сам протестировал его, создав XLAM, сохранив его на своем рабочем столе, установив в надстройки Excel, а затем используя его в новой книге.

Шаги:

  1. После сохранения надстройки закройте ее.
  2. Перейти к параметрам Excel -> Надстройки
  3. В раскрывающемся меню «Управление» выберите «Надстройки Excel» и нажмите «Перейти»
  4. В появившемся диалоге надстроек нажмите «Обзор» и перейдите к надстройка, которую вы только что создали. Выберите его и нажмите «ОК»
  5. Если будет предложено сохранить надстройку в папке надстроек, выберите «Нет». Выбор «Да» может вызвать ошибку, если суффикс файла надстройки не соответствует используемой версии Excel.
  6. Ваша надстройка должна появиться в поле «Доступные надстройки», установите флажок и нажмите «ОК»
  7. Ваша надстройка теперь должна быть активной при каждом открытии Excel.
  8. Проверьте это, открыв новую книгу и попробуйте использовать UDF.

Best

1 голос
/ 20 апреля 2011

Вы можете открыть файл .xla и выполнить процедуру Auto_Open для установки надстройки.

http://www.vbaexpress.com/kb/getarticle.php?kb_id=693

После закрытия Excel вы можете удалить саму надстройку.

oAddIn.Installed = False

Вы можете задать настройку надстройки для пользователя, чтобы он не удалялся после каждого использования, используя лист с именем что-то, а затем ячейку A1, равную true или false.

Я не проверял это, но, надеюсь, это работает для вас.

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