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! |
Besucher: 0 online | 0 heute | 0 diesen Monat | 2215549 insgesamt | Seitenaufrufe: 99 | Letzte Änderung: 24.06.2006 | © 2001-18 Christian Freßdorf | ||||
Wir suchen das Wissen, das wir durch Information verloren haben. T. S. Eliot | powered by phpCMS and PAX |