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: 1 online  |  67 heute  |  2497 diesen Monat  |  2154881 insgesamt | Seitenaufrufe: 90   Letzte Änderung: 24.06.2006 © 2001-18 Christian Freßdorf
  Es wäre eine Freude zu leben, wenn jeder nur die Hälfte von dem täte, was er von anderen verlangt.
Valerie von Marten
 powered by phpCMS and PAX