Alle VBA-Module exportieren |
|
|||||||||||||||||||||
Ausgehend von dem Beispiel Prozedur-Übersicht können mit folgenden Abänderungen alle verfügbaren Module (Standardmodul/Userform/Klassenmodul) in ein beliebiges Verzeichnis exportiert werden.
Zur Ermittlung werden nacheinander alle Projekte (VBProjects-Einträge) durchlaufen. Diese entsprechen den obersten Einträgen im Projekt-Explorer der IDE und stellen alle geöffneten und geladenen Dokumente, Vorlagen und Add-Ins dar. Damit beim Export die korrekte Dateiendung verwendet wird, ist die Typ-Berücksichtigung des jeweiligen Moduls notwendig, da die Dateieindung nicht automatisch gesetzt wird. Update-Informationen: ' Damit auf die Projekte und Module zugegriffen werden kann, ' muss in der IDE ein Verweis (Extras/Verweise) auf die ' "Microsoft Visual Basic for Applications Extensibility 5.3" ' gesetzt sein! Sub ExportMacros() Dim myProject As VBProject Dim myComponent As VBComponent Dim strFile() As String Dim strOrdner As String Dim strNames As String Dim strProj As String , strProjOrdner As String Dim strMSG As String ' Ordner auswählen strOrdner = GetFolderInternal("Ordner auswählen", "C:\") ' Alle Projekte durchlaufen For Each myProject In VBE.VBProjects ' Nur ungeschützte berücksichtigen If myProject.Protection = vbext_pp_none Then On Error Resume Next If myProject.VBComponents.Count > 1 Then strFile() = Split (myProject.FileName, "\") strNames = strFile(UBound(strFile())) strNames = Replace (strNames, ".dot", "") If Len (Dir (strOrdner & "\" & strNames, vbDirectory ))= 0 Then MkDir strOrdner & "\" & strNames End If strProjOrdner = strOrdner & "\" & strNames On Error GoTo 0 ' Alle Module durchlaufen strProj = "" For Each myComponent In myProject.VBComponents With myComponent strProj = strProj & .Name & vbCr ' Modul-Typ ermitteln und mit richtiger Endung exportieren If .Type = vbext_ct_StdModule Then .Export strOrdner & "\" & strNames & "\" & .Name & ".bas" ElseIf .Type = vbext_ct_ClassModule Then .Export strOrdner & "\" & strNames & "\" & .Name & ".cls" ElseIf .Type = vbext_ct_MSForm Then .Export strOrdner & "\" & strNames & "\" & .Name & ".frm" ElseIf .Type = vbext_ct_Document Then .Export strOrdner & "\" & strNames & "\" & .Name & ".cls" End If End With Next myComponent strMSG = strMSG & strProjOrdner & ":" & vbCrLf & strProj & vbCrLf End If End If Next myProject MsgBox "Es wurden alle Module aus folgenden Vorlagen exportiert: " & vbCrLf & strMSG, _ vbInformation , "Module exportieren" End Sub Zur besseren Identifizierung wird dem Modulnamen noch der Vorlagenname angehängt. Wichtig: Microsoft Visual Basic for Applications Extensibility 5.3
gesetzt sein! |
www.chf-online.de/vba/vbaexportmakros.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |