2011-12-28 4 views
0

Я работаю над проектом для моей команды на работе. Электронная таблица Excel 2003 находится в NT NFS, поэтому все они могут ее использовать. Мне нравится XLAs, но одна досадная вещь о них кажется, что они, похоже, не зависят от книги. Установка его для одного устанавливает его для остальных, и наоборот. С другими языками во время компиляции вы можете легко связывать библиотеки для определенных исходных файлов.Создание/использование пользовательских библиотек VBA в Excel

Мне было интересно, возможно ли иметь пользовательские библиотеки Excel VBA и как это сделать? Спасибо

+0

Красота VBA заключается в том, что код привязан к самому документу excel. Что вы делаете, что требует надстройки? Использование надстройки добавит больше обслуживания и, как правило, будет использоваться, если вам понадобится код для одинакового применения во всех книгах. – Fink

+0

Вы имеете в виду, кроме модулей, которые вы можете экспортировать и импортировать как * .bas-файлы? Если это не удовлетворяет требованиям «пользовательских библиотек Excel VBA, зависящих от рабочей книги», пожалуйста, уточните, почему нет. –

ответ

0

Решение, с которым я пошел, заключалось в том, чтобы написать собственный код для загрузки и выгрузки надстроек в зависимости от того, какие книги открыты. Это было больно, но он полностью выполнил функциональность, которую я желал. Чтобы они могли делиться всеми, я помещал их в NFS и делал их доступными только для чтения. Когда я хочу изменить библиотеки, я их открываю для краткой записи.

1

Для этой цели я использую CustomDocumentProperties. Надстройка содержит весь код, а «шаблон» - это документ для работы. В шаблоне создайте CustomDocumentProperty под названием «MyApp» или что-то еще. В надстройке используйте события уровня приложения для мониторинга вызовов workbook_open. В этом случае проверьте, содержит ли открытая рабочая книга CustomDocumentProperty для вашего приложения. Если это так, выставить пользовательский интерфейс надстройки (например, сделать видимыми меню).

Смотрите также http://www.dailydoseofexcel.com/archives/2004/07/16/custom-document-properties/

В этом примере я использую событие Window_Activate. Если активируется правильный тип рабочей книги, я показываю пользовательскую панель инструментов. Если он отключен, я скрою его.

+0

Когда я сказал документ, я должен был сказать, что этот документ является только основным файлом. Каждый член команды удаленно вносит изменения в внешний документ Excel и удаленно «фиксирует» эти изменения в главном файле, который был файлом, на который я ссылался. Причина этого в том, что мне нужна возможность объединить изменения, сделанные в фигурах, и Share Workbooks этого не делают, и только один человек может иметь доступ на запись к документу за раз. В любом случае, эти области разработки имеют в основном один и тот же код VBA, и каждый раз, когда происходит изменение, он должен быть сделан другим. – Wes

+0

Модули импорта/экспорта не будут работать, потому что каждый раз, когда изменения вносятся в .bas-файл, он должен быть повторно импортирован вручную для каждого удаленного документа Excel. Надстройки решают это, потому что мне нужно только один раз внести изменения в одно место. – Wes

+0

В ответ Дику, я буду использовать то, что вы предложили, потому что я думаю, что это помогает мне немного. Но основная проблема по-прежнему остается, если у вас есть куча книг excel, и только один из них использует надстройку, как не устанавливать эту надстройку для всех из них и только одну из них? Может быть, я просто придираюсь. – Wes

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