Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Module exportieren

Module exportieren
09.05.2013 19:03:23
ing.grohn
Hallo Forum,
folgendes Modul hab ich aus dem Archiv:
Public Sub prcExort()
Dim objVBComponent As Object
Dim objWorkbook As Workbook
Dim strType As String
Set objWorkbook = ActiveWorkbook
For Each objVBComponent In objWorkbook.VBProject.VBComponents
With objVBComponent.CodeModule
Select Case objVBComponent.Type
Case 1
strType = ".bas"
Case 2, 100
strType = ".cls"
Case 3
strType = ".frm"
End Select
objWorkbook.VBProject.VBComponents(objVBComponent.Name).Export _
"C:\Export\" & objVBComponent.Name & strType
End With
Next
End Sub

das Modul steigt in der Zeile: For Each objVBComponent In objWorkbook.VBProject.VBComponents
mit der Fehlermeldung "Die Methode 'VbProject' für das Object '_Workbook' ist fehlgeschlagen" aus.
Warum? bzw welche Verweise müssen angehakt sein?
Vielen Dank für Eure Mühe!!
Mit freundlichen Grüßen
Albrecht

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
MS VBA Extensibility 5.3 -- Gruß owT
09.05.2013 19:34:30
Luc:-?
:-?

AW: MS VBA Ext. 5.3 ist angehakt, tut nicht!!
09.05.2013 20:41:27
ing.grohn
Hallo Luc,
ist angehakt funtioniert aber nicht!
MfG
Albrecht

AW: Module exportieren
09.05.2013 21:00:45
ing.grohn
Hallo Forum, hallo Luc,
hat sich geklärt, in Excel Makro Optionen muß die Vertrauensfrage gestellt werden!!
Vielen Dank!
Mit freundlichen Grüßen
Albrecht

Anzeige
AW: Module exportieren
09.05.2013 21:29:40
Luschi
Hallo Albrecht,
trotzdem solltest Du noch etwas beachten. Trenne bitte den Case-Fall 2 und 100 und vergibt
für die 100 einen anderen Dateityp. Denn sicher hast Du vor, diesen exportierten Vba-Code wieder mal in eine Datei einzuspielen und dann fällt Dir die 100 mächtig auf die Füße.
Alle Klassenmodule mit der Kennung 2 sind die normalen Klassenmodule und lassen sich mit dem Import-Befehl einlesen.
Die mit der Kennung 100 sind die Klassenmodule unter 'Microsoft Excel Objecte'
wie z.B: "DieseArbeitsmappe" und müssen per 'AddFromFile' eingelesen werden. Wenn mann diese _ auch importiert, werden sie in die Gruppe der normalen Klassenmodule eingegliedert und nicht da, wo sie eigentlich hingehören. Deshalb mache es so:

Public Sub prcExort()
Dim objVBComponent As Object
Dim objWorkbook As Workbook
Dim strType As String
Set objWorkbook = ActiveWorkbook
For Each objVBComponent In objWorkbook.VBProject.VBComponents
With objVBComponent
Select Case .Type
Case 1 'vbext_ct_StdModule
strType = ".bas"
Case 2 'vbext_ct_ClassModule
strType = ".cls"
Case 3 'vbext_ct_MSForm
strType = ".frm"
Case 100 'vbext_ct_Document
strType = ".clsS"
End Select
objWorkbook.VBProject.VBComponents(.Name).Export _
"C:\Export\" & .Name & strType
End With
Next
End Sub
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Module exportieren
10.05.2013 08:19:04
ing.grohn
Hallo Luschi,
vielen Dank für den wertvollen Hinweis!!
Jetzt erscheint die Aussage des Ursprungsautors "er würde auf den Import der 100-er Module verzichten" in einem anderen Licht.
Mit freundlichen Grüßen und ein schönes WE
ALbrecht
;
Anzeige
Anzeige

Infobox / Tutorial

Excel Module exportieren: Eine praktische Anleitung


Schritt-für-Schritt-Anleitung

Um Excel Module zu exportieren, benötigst Du ein einfaches VBA-Skript. Hier ist eine Schritt-für-Schritt-Anleitung, wie Du dies umsetzen kannst:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.

  2. Füge ein Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbook)" und wähle "Einfügen" > "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Public Sub prcExort()
        Dim objVBComponent As Object
        Dim objWorkbook As Workbook
        Dim strType As String
        Set objWorkbook = ActiveWorkbook
    
        For Each objVBComponent In objWorkbook.VBProject.VBComponents
            With objVBComponent
                Select Case .Type
                    Case 1 ' vbext_ct_stdmodule
                        strType = ".bas"
                    Case 2 ' vbext_ct_classmodule
                        strType = ".cls"
                    Case 3 ' vbext_ct_msform
                        strType = ".frm"
                    Case 100 ' vbext_ct_document
                        strType = ".clsS"
                End Select
                objWorkbook.VBProject.VBComponents(.Name).Export _
                "C:\Export\" & .Name & strType
            End With
        Next
    End Sub
  4. Passe den Exportpfad an: Stelle sicher, dass der Pfad C:\Export\ existiert oder ändere ihn nach Deinen Wünschen.

  5. Führe das Makro aus: Drücke F5 oder gehe zu "Ausführen", um das Makro zu starten.


Häufige Fehler und Lösungen

  1. Fehler: „Die Methode 'VbProject' für das Object '_Workbook' ist fehlgeschlagen“

    • Lösung: Stelle sicher, dass die "Microsoft VBA Extensibility 5.3"-Bibliothek aktiviert ist. Gehe dazu zu "Extras" > "Verweise" im VBA-Editor und aktiviere das entsprechende Kontrollkästchen.
  2. Fehler bei der Vertrauensstellung

    • Lösung: In den Excel-Makro-Optionen musst Du die Sicherheitsstufe für Makros anpassen und die Vertrauensfrage beantworten.

Alternative Methoden

Falls Du die Module nicht über VBA exportieren möchtest, kannst Du sie auch manuell exportieren:

  1. Rechtsklick auf das Modul: Im VBA-Editor kannst Du direkt auf das Modul klicken.
  2. Wähle „Exportieren“: Nachdem Du einen Rechtsklick gemacht hast, wähle „Exportieren“ und speichere die Datei an einem gewünschten Ort.

Diese Methode ist zwar weniger automatisiert, eignet sich jedoch gut für gelegentlichen Gebrauch.


Praktische Beispiele

Hier ist ein Beispiel, wie Du ein Excel Makro exportieren kannst, das alle Module eines Arbeitsbuchs in den gewünschten Ordner exportiert:

Public Sub ExportAllModules()
    Dim objVBComponent As Object
    Dim strPath As String
    strPath = "C:\Export\"

    For Each objVBComponent In ThisWorkbook.VBProject.VBComponents
        objVBComponent.Export strPath & objVBComponent.Name & ".bas"
    Next objVBComponent
End Sub

Diese Funktion exportiert alle Standardmodule als .bas Dateien in den angegebenen Ordner.


Tipps für Profis

  • Verwende .clsS für spezielle Dokumente: Wenn Du Klassenmodule mit dem Typ 100 exportierst, stelle sicher, dass Du einen anderen Dateityp vergibst, um Verwirrung beim Import zu vermeiden.
  • Verwende Fehlerbehandlungsroutinen: Füge Fehlerbehandlungsroutinen in Deine Makros ein, um potenzielle Probleme beim Export zu identifizieren und zu lösen.
  • Sichere Deine Module regelmäßig: Erstelle regelmäßig Backups Deiner Module, um Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Wie exportiere ich nur bestimmte Module?
Du kannst das Skript anpassen, indem Du eine Bedingung hinzufügst, die nur bestimmte Module exportiert, z.B. nach Namen oder Typ.

2. Welche Excel-Version benötige ich für den VBA Export?
Die oben genannten Methoden sind in Excel 2010 und späteren Versionen anwendbar. Stelle sicher, dass die VBA-Extensibilitätsbibliothek aktiviert ist.

3. Wo finde ich die exportierten Module?
Die exportierten Module befinden sich im Ordner, den Du im Skript angegeben hast, z.B. "C:\Export\".

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige