CATIAV5组装或拆卸catvba项目以进行版本控制

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,请参见上文)。如果我只能打开另一个项目,则可以将其用作空模板来“填充”。

a408377654 回答:CATIAV5组装或拆卸catvba项目以进行版本控制

经过痛苦的反复试验,我得出了一个可行的原型。

要构建一个新的空项目并使用导出的模块/表单/类填充它,请使用以下代码创建一个模块:

'remember to add "Microsoft APC" into the references
Sub main()

    Dim apc_global As New ApcGlobal
    Dim apc_framework As New Apc

    Dim apc_project As project
    Dim vb_project As VBProject

    Dim rootStorage As Storage
    Dim innerStorage As Storage

    Set apc_project = apc_framework.Projects.add(axProjectNormal,"hello")
    Set vb_project = apc_project.VBProject

    Set rootStorage = apc_global.CreateStorage("C:\hello.catvba",axAccessReadWrite)
    'you should create an innerstorage called "apc". I got crazy to find this out
    Set innerStorage = rootStorage.CreateStorage("apc",axAccessReadWrite)

    'here you should add the project references
    'vb_project.References.addFromGUID.... 

    'then you can import your previously exported files
    vb_project.VBComponents.Import("path_of_your_module/class/form files")

    Call apc_project.SaveAs(innerStorage)

    apc_project.Close

End Sub

所以基本上您要

  1. 使用两个“存储”,一个根存储和一个名为“ apc”的子存储创建一个APCProject。
  2. 然后,您可以创建vb项目并导入以前导出为.bas .cls .frm文件等的组件...

此内部存储是您必须保存apc项目的地方

您将以编程方式构建一个全新的catvba项目! 希望这会有所帮助

本文链接:https://www.f2er.com/2534328.html

大家都在问