Каков наилучший способ упаковки и распространения приложения Excel - PullRequest
3 голосов
/ 27 августа 2008

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

Когда я создал подобные инструменты в Word, я могу поместить весь код в файл шаблона (.dot) и вызвать его оттуда. Если я помещу файл шаблона в папку автозагрузки Office, он будет запускаться при каждом запуске Word. Есть ли аналогичный способ упаковки и распространения моего кода в Excel? Я пытался использовать надстройки, но не нашел способа вызвать код из окна приложения.

Ответы [ 5 ]

10 голосов
/ 27 августа 2008

Просто переместите свой код в Excel Addin (XLA) - он загружается при запуске (при условии, что он находится в папке% AppData% \ Microsoft \ Excel \ XLSTART), но если это надстройка, а не рабочая книга, то только ваши макросы и определенные функции запуска будут загружены.

Если функции зависят от самой электронной таблицы, то вы можете использовать комбинацию шаблонов и надстроек.

Я распространяю часть приложения, подобного этой, у нас есть надстройки для Word, Excel и Powerpoint (XLA, PPA, DOT), а также версии Office 2007 для ленточных приложений (DOTM, XLAM и PPAM)

Код запуска надстройки создает кнопки панели инструментов, если они не найдены, это означает, что в любой книге / документе / и т. Д. Они могут просто нажать кнопку панели инструментов, чтобы запустить наш код (у нас есть две кнопки действий и одна кнопка, которая отображает настройки диалог)

Шаблоны на самом деле не подходят для кода VBA, надстройки - определенно путь ...

Таким образом, чтобы загрузить панели инструментов при запуске, мы используем что-то вроде .. (проверяя, существует ли панель инструментов, хотя - код будет запускаться для каждого открытого листа, но панели инструментов сохраняются для пользовательского сеанса)

Public Sub Workbook_Open()
     ' startup code / add toolbar / load saved settings, etc.
End Sub

надеюсь, что поможет:)

2 голосов
/ 19 сентября 2008

Я всегда использую комбинацию надстройки (xla) / шаблона (xlt). Ваша надстройка создает меню (или другие точки входа в пользовательский интерфейс) и загружает шаблоны по мере необходимости. Он также записывает данные, которые вы хотите сохранить в базе данных (Access, SQLServer, текстовый файл или даже файл xls).

Первое правило - хранить ваш код отдельно от ваших данных. Затем, если позже у вас появятся исправления ошибок или другие изменения кода, вы можете отправить новую надстройку, и на все их шаблоны и базы данных это не повлияет.

2 голосов
/ 27 августа 2008

Вы можете изменить файл personal.xls пользователя, который хранится в каталоге запуска Excel (зависит от версии Office). Если у вас много пользователей, это может быть неудобно.

Альтернативный способ решить вашу проблему - сохранить макрос в файле шаблона (.xlt). Затем, когда пользователи открывают его, они не могут сохранить его обратно в исходный файл, но должны указать новое имя файла, чтобы сохранить его как. Недостатком этого метода является то, что вы получаете несколько копий исходного кода повсюду с каждым сохраненным файлом. Если вы измените исходный файл .xlt, и кто-то перезапустит старый макрос в ранее сохраненном файле .xls, то все может выйти из строя.

0 голосов
/ 01 октября 2015

Как насчет сохранения Excel в сетевой папке с разрешениями только на чтение? Аутентификация может быть выполнена с помощью встроенной аутентификации Windows, и вам не нужно хранить пароль подключения к базе данных в VBA. Тогда вам нужно только один раз разослать ссылку на это место своим пользователям. Если вы сделаете обновление, вы только измените данные в этой папке без уведомления пользователя.

0 голосов
/ 19 сентября 2008

Вы смотрели в ClickOnce развертывание файла Excel?

...