CATIAV5管理扩展名为.catvba的特定文件中的vba项目
这些项目的结构和行为类似于其他VBA:它们具有模块,表单和类。 您可以手动导入导出该VBA组件,就像在Excel中一样。但是似乎在CATIA中您无法自动执行此操作,而在Excel中可以使用“ microsoft Visual Basic应用程序可扩展性”模块来实现(如您在此处https://www.rondebruin.nl/win/s9/win002.htm所示)
我想在CATIAV5中实现类似的目标。
换句话说,为了使我的.catvbas受版本控制,我想:
- 自动导入/导出模块/类/表单,并以编程方式在.catvba文件中“汇编”和“反汇编”它们。
现在,我设法在示例catvba项目上添加了扩展库,并访问了当前项目组件以进行导入或导出。
'These references were added in the project:
'microsoft APC Object library
'microsoft Visual Basic for Applications Extensibility
Sub main()
Dim oAPC As New Apc
Dim oVBE As VBE
Set oVBE = oAPC.VBE
Dim p As Project
Set p = oVBE.VBProjects.add(vbext_pt_HostProject)
'the instruction above throws error 440
Set p = oVBE.VBProjects.Open("C:\path\to\another\existing\project.catvba")
'the instruction above throws error 440,too
For Each comp In oAPC.VBE.activeVB.Project.VBComponent
Debug.Print comp.Name
'...export comp
Next
但是仍然无法创建一个新的catvba项目,或者打开一个现有的catvba项目(错误440,请参见上文)。如果我只能打开另一个项目,则可以将其用作空模板来“填充”。