Модуль модуля VBA Catia - PullRequest
2 голосов
/ 05 марта 2019

У меня проблема с организацией моих макросов CATIA, и я не могу найти подходящее решение для этого.

В настоящий момент у меня есть большой проект, который вырос из меньшего по времени.Это 10k строк и написано в одном модуле.Я хотел бы сделать его более читабельным и легче изменять / перемещать, создавая несколько закомментированных модулей.У меня есть мой «Основной» модуль и графический интерфейс, который будет вызывать другие модули.Проблема в том, что CATIA делает каждый созданный мной модуль доступным для использования в качестве макроса.Я не хочу этого, потому что я хочу, чтобы пользователь сделал ярлык для моего основного модуля.Мне не нужно скрывать мой код, но было бы очень сложно объяснить новому пользователю, какой макрос ему / ей нужно будет использовать, если он получил 20 макросов при импорте одного проекта.

Я пытался с помощью "option private module""и даже используя пароль, но я не могу уменьшить количество доступных макросов в этом списке.Единственное решение, которое я могу придумать (и это безумие) - это поместить каждую процедуру / функцию в отдельный класс.

Example of tree structure in VBA and CATIA macro interface

любой опыт или мысль об этомпроблема приветствуется.

Заранее спасибо!:)

1 Ответ

2 голосов
/ 06 марта 2019

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

Все ваши макросы могут выглядеть так:

Public Sub DoSomething()
    With New MyAwesomeMacro
        .Execute
    End With
End Sub

Public Sub DoAnotherThing()
    With New SomeOtherMacro
        .Execute
    End With
End Sub

'...

Итак, у вас есть *Модуль класса 1010 * с процедурой Execute (которая может принимать аргументы при необходимости):

Option Explicit

Public Sub Execute()
    'the old macro code here...
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...