2015-11-23 8 views
-1

Я пишу макрос Excel, который должен сотрудничать с CATIA рисунком «на лету». Это означает, что ему нужно поместить некоторые вещи на чертеж из листа excel и получить от рисования вещи, чтобы извлечь листы по требованиям пользователей. Звучит просто, но .. В моем конкретном случае CATIA не устанавливается локально, а на сервере компании. Чтобы подключиться, пользователь должен зарегистрировать его с помощью команды «CNEXT.exe/regserver», сначала ищет путь к CNEXT.exe на сетевом диске. Поэтому ему нужно запустить команду, например: «j: \ appl ... \ CNEXT.exe/regsever». В моем макросе мне нужно установить соединение с объектом CATIA с помощью ссылки на * .TLB файлов через: Tools \ References и выберите apropriate Reference (в моем случае CATIA V5 InfInterfaces Object Library и CATIA V5 DraftingInterfaces Object Library)Excel <-> Ссылка на Catia: ссылки на tlb issue

References screenshot

Все еще легко, теперь сложная часть: все работает нормально, пока я нахожусь на работе, и доступны сетевые диски. Как только я попытаюсь открыть этот файл excel снаружи, он зависает. Я понял, что указанные мной ссылки указывают на файлы * .tlb, которые хранятся в том же месте, что и CATIA. :( Этот файл Excel, который я разрабатываю, должен быть предоставлен нашим поставщикам, которым необходимо заполнить рабочие таблицы вручную, которые им необходимо заполнить, а также другие люди в моей компании, которые не имеют доступа к CATIA, чтобы иметь возможность просмотреть его Общая идея заключается в том, что макрос должен запускаться только людьми, использующими CATIA и ручной модификацией рабочих листов, и обзор должен быть доступен для других. В текущей ситуации, не имеющей доступа к сетевому диску «j: ...», никто не сможет даже open excel file, не говоря уже о запуске макроса, который я пишу.

Вопрос: Можно ли заставить excel не проверять ссылки на lanuch и делать это только на каком-то этапе в одной из процедур инициализации? который проверяет наличие CATIA, в котором Excel может проверить эти ссылки. Другая идея - встраивать som ehow * .tlb, или они содержат в моем файле excel постоянный доступ для всех.

Я пытался добавить ссылку на * .tlb-файлы внутри кода, чтобы указывать в тех же * .tlb-файлах, но скопирован в какой-то локальный каталог на моем компьютере (чтобы писать код за пределами компании), но я получил сообщение об ошибке:

Error message - User-defined type not defined

Небольшое обновление - Я только красный о начале и позднего связывания. Я сделал тест и напишу код, который объявляет объект CATIA как Object, а не INFITF.Application. Теперь я могу кодировать без ссылки на любые файлы * .tlb. Теперь проблема исчезла, но также и intellisense :(- Я не могу себе представить код без него. Итак, мне пришла в голову мысль, что я могу правильно кодировать ссылки, указывающие на файлы * .tlb, а затем перед тем как выпустить макрос для общего использования, я мог бы обменять объявление с «CATIA specific» только на тип объекта, но для этого потребуется написать макрос, чтобы изменить макрос, чтобы изменить эти объявления для всех экземпляров всего кода :(:(:(.. помогите мне, пожалуйста ..

ответ

0

Я хотел бы предложить вам сохранить два Excel файлов «мастер-файл», содержащий макрос, который взаимодействует с CATIA и «файл данных» для хранения данных. «файл данных» не будет иметь никакого макросы, которые общаются с катией.

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

Я сделал это для клиента, и поверьте мне, это легче, чем

написать макрос, чтобы изменить макрос, чтобы изменить эти объявления для всех экземпляров во всем коде