Как лучше всего упаковать и распространить приложение Excel?

StackOverflow https://stackoverflow.com/questions/29630

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

Просто переместите свой код в надстройку Excel (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

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

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

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

Вы изучали ClickOnce для развертывания файла Excel?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top