Как использовать код с VBA

Каков наилучший способ избежать дублирования кода при работе в VBA?

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

Есть ли хороший способ репликации этой функции в VBA?

Ответ 1

Далее следует внимание на Excel, но я уверен, что то же самое применимо к любым продуктам Office.

Простым способом является сохранение вашего повторно используемого кода в качестве дополнения (*.xla для Excel 2003, *.xlam для Excel 2007+). Затем вы добавляете добавление в Excel, и все открытые электронные таблицы будут иметь доступ к пользовательским функциям, которые у вас есть в вашем добавлении. Если вы добавите специальный код VBA в электронную таблицу, вы можете добавить ссылку на свой аддон, и ваш код VBA будет иметь доступ ко всем общедоступным югу, функциям и классам вашего аддона.

В моей организации мы используем 3 домашних дополнения - они хранятся в C:\Program Files\OrganisationName. И у каждого есть доступ к ним. Когда обновление сделано, нам нужно только скопировать новую версию на все жесткие диски и перезагрузить Excel, и у них есть новая версия.

В добавлениях содержатся служебные функции, такие как функции:

  • читать данные из/записывать данные в электронные таблицы/файлы/базы данных.
  • обычное манипулирование данными, например удаление дубликатов из списка
  • расширенные статистические функции
  • и др.

Несколько недостатков:

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

Альтернативой является разработка библиотек xlls или COM в VB или С#, например, но это то, что я не пробовал.

Есть много обучающих программ в Интернете, если вам нужна более подробная процедура.