2008-08-27 3 views
3

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

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

ответ

2

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

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

+0

Я согласен с шаблоном .xlt. – 2009-01-04 04:37:16

10

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

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

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

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

Шаблоны на самом деле не подходят для кода VBA, аддины, безусловно, подходят ...

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

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

надежды, что помогает :)

1

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

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

0

Вы изучили возможность использования Excel-файла ClickOnce?

+0

Не могли бы вы рассказать мне больше о ClickOnce. – JonnyGold 2008-09-20 21:00:18

0

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

Смежные вопросы