VBA AutoCAD & Inventor : exporter l'ensemble des fichiers d'un projet

Un des inconvénients majeurs de VBA (qui en comporte beaucoup), c'est que le code est encapsulé dans un format binaire (fichiers .dvb pour AutoCAD, .ivb pour Inventor) qui au contraire d'un fichier texte, ne peut pas être correctement géré par un gestionnaire de source comme Mercurial ou Subversion.

Pour pallier à ce problème, on peut exporter les fichiers d'un projet .dvb ou .ivb avec le code suivant :

Public Sub Export()
    Dim vbe As vbe
    Set vbe = ThisDrawing.Application.vbe
    Dim comp As VBComponent
    Dim outDir As String
    outDir = "c:\\temp\\VBA"
    If Dir(outDir, vbDirectory) = "" Then
        MkDir outDir
    End If
    For Each comp In vbe.ActiveVBProject.VBComponents
        Select Case comp.Type
            Case vbext_ct_StdModule
                comp.Export outDir & "\" & comp.Name & ".bas"
            Case vbext_ct_Document, vbext_ct_ClassModule
                comp.Export outDir & "\" & comp.Name & ".cls"
            Case vbext_ct_MSForm
                comp.Export outDir & "\" & comp.Name & ".frm"
            Case Else
                comp.Export outDir & "\" & comp.Name
        End Select
    Next comp
 
     MsgBox "Les fichiers VBA ont été exporté vers : " & outDir
End Sub

Vous devez placer ce code dans un module de votre projet et ajouter une référence à Microsoft Visual Basic for Applications Extensibility 5.3. En exécutant la macro, vous pouvez récupérer des fichiers .bas, .cls et .frm (fichiers textes correspondants au code) et .frx (fichiers binaires correspondants aux formulaires).

Mise à jour du 04/04/2012 : précise qu'il faut ajouter la référence à MS VBA Extensibility

Add new comment