Тема: Почему не запускаются процедуры из другого глобального проекта?
У меня открыто два проекта.
Работаю в одном, хочу выполнить процедуру из второго проекта.
Пишу просто имя той процедуры. Выходит сообщение:
Sub or Function not defined
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Почему не запускаются процедуры из другого глобального проекта?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
У меня открыто два проекта.
Работаю в одном, хочу выполнить процедуру из второго проекта.
Пишу просто имя той процедуры. Выходит сообщение:
Sub or Function not defined
А ведь вопрос интересный. Возможность выполнения функций одного проекта из другого - один из главных минусов VBA по сравнению с LISP.
Если функция (Sub) или процедура (Function), которую необходимо выполнить, не имеет аргументов, то делается это просто:
AutoCAD.Application.RunMacro "Диск:\Папка\ИмяПроекта.dvb!ИмяМодуля.ИмяФункции"
Полный путь надо указывать если Вы не уверены: загружен необходимый проект или нет. При этом если проекта нет в памяти, он будет загружен. Выполнять перед этим LoadDVB не надо. Нужная функция или процедура, естественно, не должны быть объявлены как Private.
Процедура может возвращать какое-нибудь значение. Но вот здесь то собака и порылась. Вернуть это значение в вызвавшую функцию нельзя. Это первое.
И второе. Если нужная функция или процедура имеет аргументы, то запустить ее подобным образом нельзя. Если аргументы простые, типа String или Integer, то с помощью "шаманских" приемов это сделать можно. Про приемы https://www.caduser.ru/forum/topic5886.html . А вот если надо передать Variant, массив и т. п., то увы.
Вот это и есть те самые минусы, о которых я говорил в начале. Буду рад если ошибаюсь.
Небольшое дополнение.
Когда я говорю о том, что нельзя вернуть результат выполнения процедуры в вызвавшую ее функцию, или что нельзя запустить функцию с аргументами, я имею в виду, так сказать, "прямую" передачу данных. Т. е. из проекта в проект, без использования, допустим, временных файлов.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Почему не запускаются процедуры из другого глобального проекта?
Форум работает на PunBB, при поддержке Informer Technologies, Inc