2
www.ChF-Online.de  

Alle VBA-Module exportieren

   Neuigkeiten
   API-Aufrufe in VBA
   VBA2HTML
   Word
   Word-VBA
 Verschiedenes
 Feld-Arbeiten
 Form-Sachen
 Menü-/Symbolleisten
 VBA und Lotus Notes
 VBA und Mail
aktiv aktiv Inside VBAIDE
 Debug-Informationen
 Module verwalten (I)
 Module verwalten (II)
aktiv  VBA-Module exportieren
 Prozedur-Übersicht (I)
 Prozedur-Übersicht (II)
 Projekt-Verweise
 Von Word nach Outlook
 Fix-und-Fertiges/Projekte
   Word2007 (RibbonX)
   Word2010 (RibbonX)
   Outlook-VBA
   Links zu VB(A)
   DocToHelp
   Netport Express XL
   Astronomie
   Gästebuch
   Volltextsuche
   Sitemap
   Buch:Word-Programmierung
   Impressum & Kontakt
   Datenschutzerklärung
Getestet unter Word2000Getestet unter WordXPGetestet unter Word2003  
Makro/Datei speichern
Print

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.
Sofern diese nicht geschützt sind, was für Add-Ins und per Kennwort geschützte Vorlagen und Dokumente gilt, werden in einer weiteren Schleife alle enthaltenen Module (VBComponents-Einträge) durchlaufen und der Typ des Moduls ermittelt.
Anschließend wird das Modul über die Export-Methode in ein beliebiges Verzeichnis gespeichert. Dieses wird mittels des  SHBrowseForFolder-API ausgewählt.

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:
Die Ausgabe der Module erfolgt jetzt in separate Verzeichnisse pro Projekt (VBProject).


' 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:
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!


 Besucher: 2 online  |  61 heute  |  2072 diesen Monat  |  1663667 insgesamt | Seitenaufrufe: 97   Letzte Änderung: 24.06.2006 © 2001-14 Christian Freßdorf
  Demokratie ist die wiederholt auftauchende Vermutung, daß mehr als die Hälfte der Leute in mehr als der Hälfte der Fälle recht haben.
E. B. White
 powered by phpCMS and PAX