_ Если вы создали надстройку для хранения пользовательских функций Excel, вы могли обнаружить, что, хотя функции нормально работают на листе Excel, вы не можете использовать их в процедурах VBA в других книгах. Как будто редактор Visual Basic не может их видеть. Ну это потому, что не может! В этой статье объясняется, как это исправить . Прежде всего, подумайте, действительно ли это то, что вы хотите сделать.

Надстройки предназначены в первую очередь для добавления дополнительных функций в ваши книги. Когда вы загружаете надстройку Excel, ее функции сразу становятся доступными для всех ваших книг. Если вы создаете процедуру VBA, которая зависит от настраиваемой функции, содержащейся в другой книге, эта другая книга должна быть открыта всякий раз, когда вы хотите использовать ее функцию. То же самое и с пользовательской функцией в надстройке. Если надстройка загружена, это нормально, но предположим, что вы отправляете книгу по почте кому-то другому или распространяете ее в своей рабочей группе. Вы также должны не забыть распространять надстройку. Может быть проще включить копию функции в код книги, чтобы ваши процедуры имели прямой доступ к ней (вам может потребоваться сделать ее Private Function или изменить ее имя, чтобы избежать конфликтов имен).

Я не говорю, что не делай этого. Вам просто нужно сначала подумать об этом, и если вы уверены, что надстройка будет доступна, то вперед. Вот как …​

Когда возникает проблема?

Я пишу процедуру для одной из своих рабочих тетрадей. В своей процедуре я хочу использовать функцию RemoveSpaces, которую я создал некоторое время назад и сохранил в моей надстройке Martin’s Functions, которая в настоящее время установлена ​​в моей копии Excel. Но когда я пытаюсь запустить свою процедуру, я получаю сообщение об ошибке.

Редактор Visual Basic ведет себя так, как будто функции не существует, но я знаю, что она существует, и могу увидеть это, если взгляну на код внутри своей надстройки. Фактически, код работает нормально, если я запускаю его из надстройки.

Мне нужен редактор Visual Basic, чтобы иметь возможность видеть функции в моей надстройке из модуля кода другой книги.

Дайте вашей надстройке имя проекта VBA Каждая книга имеет имя проекта VBA. Это называется VBAProject. Вы можете изменить это имя, если хотите, но обычно я не беспокоюсь, потому что обычно это не имеет значения.

Вы когда-нибудь задумывались, почему все книги, отображаемые в панели Project Explorer визуального базового редактора, называются «VBAProject»? Если у вас установлена ​​какая-либо из надстроек Microsoft, вы увидите, что у них другое имя. Разработчики Microsoft дали своей надстройке Analysis ToolPak название проекта VBA «funcres».

Первое, что нужно сделать, это дать вашей надстройке уникальное имя проекта VBA.

Это связано с тем, что вы собираетесь называть его этим именем на следующем шаге, и если их несколько, редактор Visual Basic не будет знать, какой из них использовать.

На панели Project Explorer выберите имя надстройки. Если он еще не открыт, отобразите Properties Window редактора Visual Basic. Вы увидите, что есть только одно свойство — Name. Введите другое имя и нажмите Enter. Вам нужно будет соблюдать обычные правила именования для VBA (то есть никаких недопустимых символов и пробелов). Вы увидите, что имя сразу же применяется в Project Explorer.

Теперь сохраните изменения в надстройке. Убедитесь, что ваша надстройка выбрана в Project Explorer, и выберите «Файл»> «Сохранить».

Установка ссылки на надстройку На этом этапе вы сообщаете книге, в которой вы хотите использовать функции надстройки, о том, что надстройка существует. Вы делаете это, установив ссылку на надстройку. Вы могли сталкиваться с этой техникой раньше, если хотели написать код Excel для взаимодействия с другой программой, такой как Outlook или Access.

Если это удобно, перезапустите Excel на этом этапе. Это связано с тем, что ваша переименованная надстройка будет перезагружена, а список, который вы собираетесь увидеть, будет обновлен. Если это неудобно, не беспокойтесь …​ прочтите следующий абзац и решите, что вы хотите сделать.

Откройте модуль кода в книге, в которой вы хотите использовать функции надстройки, затем перейдите в Инструменты> Ссылки, чтобы открыть диалоговое окно Ссылки, где вы увидите список всех библиотек и других объектов (например, надстроек), к которым вы можете установить ссылку. Если вы перезапустили Excel, этот список будет обновлен, и вы сможете найти имя проекта, которое вы дали своей надстройке на последнем шаге. Поставьте галочку в поле рядом с именем и нажмите кнопку ОК.

Если вы не перезапускали Excel, вам нужно будет найти файл надстройки, нажав кнопку «Обзор» в диалоговом окне «Ссылки». Откроется окно «Добавить ссылку». Измените раздел Тип файлов: на _Файлы Microsoft Excel (.xls; .xla) _, затем перейдите к папке, в которой хранится надстройка.

Выберите свою надстройку и нажмите «Открыть». Это добавит вашу надстройку в список, где вы можете выбрать ее и нажать OK.

ПРИМЕЧАНИЕ. Необязательно выполнять обе эти процедуры! Выберите тот или иной вариант в зависимости от того, перезапустили ли вы Excel после изменения имени проекта VBA надстройки.

Теперь вы сможете использовать функции надстройки в любом модуле книги, в которой вы установили ссылку, и они будут распознаваться редактором Visual Basic …​

Если вы посмотрите на Project Explorer, вы увидите, что ссылка была применена к книге …​

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

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

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

Учтите эти факторы, и у вас не будет проблем.