Сохранение надстройки Excel в существующей книге

1

В настоящее время я разрабатываю надстройку Excel с использованием библиотеки Excel-DNA. К сожалению, мне нужно как-то сериализовать надстройку в книгу, поэтому, если рабочая книга открыта, может быть выполнен код надстройки.

Раньше я работал с макросами VBA и Excel, которые были запущены очень сильно, я мог бы сериализовать макрос и загрузить книгу. Программное обеспечение помещало в него данные и доставляло отредактированную книгу, и мне просто пришлось открыть книгу для выполнения макроса.

Я пробовал это с помощью надстройки (например, загружая надстройку и сохраняя книгу), но это не сработало, надстройка, похоже, вообще не сохраняется. Есть ли еще один шанс в сериализации надстройки в книгу, чтобы люди, которые только что получили книгу, могли выполнить надстройку?

  • 0
    Я не думаю, что вы можете сделать это таким образом. Преимущество надстройки заключается в том, что она отделяет код от данных, но за счет более сложного развертывания. Можете ли вы поместить код в книгу, которая устанавливает надстройку? Вам все еще потребуются отдельные файлы, но, возможно, вам будет удобнее работать с ними.
  • 0
    @DickKusleika Что вы подразумеваете под кодом в рабочей книге, которая устанавливает надстройку ? Это вообще возможно? Программное обеспечение каким-то образом хранит книгу, по крайней мере, макросы были сохранены.
Показать ещё 2 комментария
Теги:
excel
deployment
excel-addins

3 ответа

3
Лучший ответ

Вы можете включить код в книгу Excel, которая установит надстройку, если она еще не указана. Вы также можете удалить эту надстройку при закрытии, если хотите, чтобы надстройка была установлена, пока рабочая книга открыта.

Проверьте JKP Name Manager, в частности код в файле диспетчера файлов установки.

http://www.jkp-ads.com/OfficeMarketPlaceNM-EN.asp

Он находит надстройку, которая, как предполагается, находится в том же пути и как файл установки, и копирует ее в UserLibrary, которая является стандартным путем для надстроек. Затем он устанавливает свойство Addin.Installed в значение True.

JKP addin - это и встроенная надстройка Excel, а не одна ДНК Excel, поэтому могут быть некоторые различия (и я не знаю, что это такое). Но вам, возможно, придется иметь дело с Application.COMAddins, а не с Application.Addins.

  • 0
    Большое спасибо!
  • 0
    Чтобы загрузить надстройку Excel-DNA, достаточно вызвать Application.RegisterXLL для ее загрузки. Обратите внимание, что любые функции в надстройке являются глобальными для Excel и не ограничиваются конкретной книгой.
Показать ещё 2 комментария
1

Как я понимаю дополнения, они сидят отдельно, так как они не могут быть связаны вместе с книгой. То, как я их понял (и использовал их до этого момента), - из-за отсутствия лучшего термина - странная "мини-программа", которая сидит внутри самой книги, а не внутри вашей книги - вы ее устанавливаете, у нее есть доступ на большее количество ресурсов ПК, надстройки даже попадают в список программ для Windows, в отличие от макроса VBA.

Надстройки решают множество проблем, но создают новый процесс. Даже если вы создали процесс, который был установлен при запуске для установки addin, я думаю, что все равно потребуется перезапуск Excel для доступа из приложения, что было бы неприятно. По-моему, развертывание надстройки по-прежнему довольно неуклюжие.

1

Там, где я работаю, у нас есть процесс развертывания для доставки записи в меню "Пуск", которая откроет Excel и правильную версию xll.

Я никогда не слышал о том, как люди встраивают аддон в книгу. Но вы можете сделать обратное, ваше дополнение может быть связано с XLA или вы можете создать меню Addin с записями для пользователя, чтобы открыть конкретную версию рабочей книги. Это привязывает книгу к определенной версии дополнения, а не наоборот, как вы просили, но может быть полезно для ваших целей. Uou может использовать сетевой диск для базовой реализации.

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

  • 0
    Да, сетевой диск подойдет больше всего в моей ситуации. Мои коллеги должны сразу почувствовать себя комфортно при использовании надстройки для имени. Я думал о добавлении небольшого меню ленты с 2 кнопками для управления надстройкой. Вы знаете, насколько дорогим может быть развертывание? То есть мне просто нужно добавить nas-путь к надстройке, и все будет работать? Спасибо за вашу помощь.
  • 1
    Что вы можете сделать, так это иметь .xla, которая будет читать конфигурационный файл где-то в фиксированном месте. Этот .xla будет содержать список xll для загрузки и загрузки их. Затем вам нужно создать скрипт VBA, который будет читать сетевой диск и создавать пункт меню для папки и файла (т.е. воспроизводить структуру каталогов в меню). Это займет некоторое время, но это не должно быть слишком сложно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню