Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: kompletten VBA-Code sichern in txt-Datei

kompletten VBA-Code sichern in txt-Datei
Maxer
Hallo Forum,
ich habe da mal eine Frage. Ich war bis heute noch nie in der Verlegenheit meinen VBA-Code aus Exceltabellen in eine seperate Datei losgelöst von Excel zu speichern. Doch leider ist es mir in der letzten Zeit 2x passiert das mir große VBA-Projekte (aufwendige Exceltabellen mit vielen Userformen etc) durch Speicherfehler seitens meines Computers kaputt gegangen sind und somit die Arbeit von Monaten hinüber ist.
Gibt es eine Möglichkeit wie ich einen kompletten VBA-Code, der sich sowohl in den Tabellen als auch in Modulen befindet in txt.Dateien zu sichern und im Fall der Fälle kann ich diesen dann auch wieder importieren?
Danke für eure Hilfe.
Gruß Ron
Anzeige

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

Betreff
Benutzer
Anzeige
AW: kompletten VBA-Code sichern in txt-Datei
10.05.2010 08:41:15
Hajo_Zi
Hallo Ron,
das ist nun keine *.TXT Datei.
Option Explicit
Public Sub alleMakrosExportieren()
'   von Nepumuk
'   Export des gesamten Codes
'   aus ThisWorkbook
'   vor Export sollten bereits vorhandener Code im Verzeichnis gelöscht werden
'   damit es mit dem Import Fehlerfrei geht
Dim vbc As Object, iCounter As Integer, sMacro As String, cType As String
For Each vbc In ThisWorkbook.VBProject.VBComponents
With vbc.CodeModule
For iCounter = 1 To .CountOfLines
If .ProcOfLine(iCounter, 0) > "" Or InStr(1, .Lines(iCounter, 1), "Dim")  0 _
Or InStr(1, .Lines(iCounter, 1), "Public")  0 _
Or InStr(1, .Lines(iCounter, 1), "Type")  0 _
Or InStr(1, .Lines(iCounter, 1), "Static")  0 _
Or InStr(1, .Lines(iCounter, 1), "Declare")  0 Then
Select Case vbc.Type
Case 1: cType = ".bas"
Case 2, 100: cType = ".cls" 'Tabelle; DieseArbeitsmape
Case 3: cType = ".frm"
End Select
' Ablagephad
Workbooks(ThisWorkbook.Name).VBProject.VBComponents(vbc.Name).Export _
"C:\Windows\Temp\" & vbc.Name & cType
Exit For
End If
Next iCounter
End With
Next vbc
End Sub
Public Sub Import1()
'   von Nepumuk
Dim vbc As Object, iCounter As Integer, StDateiname As String
With ThisWorkbook.VBProject '  Workbooks("Testmappe.xls").VBProject
For Each vbc In .VBComponents
Select Case vbc.Type
Case 1, 2, 3: .VBComponents.Remove .VBComponents(vbc.Name)
Case 100
With vbc.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
StDateiname = Dir("C:\Windows\temp\" & "*.*")
Do While StDateiname  ""
If UCase(Right(StDateiname, 4)) = ".BAS" Or UCase(Right(StDateiname, 4)) = ".FRM"  _
Or UCase(Right(StDateiname, 4)) = ".CLS" Then
.VBComponents.Import "C:\Windows\Temp\" & StDateiname
End If
StDateiname = Dir
Loop
For Each vbc In .VBComponents
If vbc.Type = 2 Then
If Left(vbc.Name, 5) = "Diese" Or Left(vbc.Name, 7) = "Tabelle" Then
.VBComponents(Left(vbc.Name, Len(vbc.Name) - 1)).CodeModule.InsertLines 1,  _
vbc.CodeModule.Lines(1, vbc.CodeModule.CountOfLines)
.VBComponents.Remove .VBComponents(vbc.Name)
End If
End If
Next vbc
End With
End Sub

Anzeige
AW: kompletten VBA-Code sichern in txt-Datei
10.05.2010 10:45:38
Maxer
Hallo Hajo,
danke für den VBA-Code. Beim überfliegen der Codezeilen habe ich verstanden wie er funktioniert. Ich werde ihn später ausprobieren.
Gruß Ron
AW: kompletten VBA-Code sichern in txt-Datei
11.05.2010 00:40:48
Daniel
Hi
wenns nicht allzuviele Userformen sind, kannst du die Userformen und allgemeinen Module einfach exportieren, in dem du im Projektexplorer mit der rechten Maustaste draufklickst und dann exportieren auswählst. Zum Importieren dann einfach DATEI-IMPORTIERN klicken und die entsprechenden Dateien auswählen oder per Drag'n'Drop aus nem Datei-Explorer in den VBA-Editor ziehen.
die angelegten Dateien heißen zwar .bas, sind aber normale Textdateien, die du mit jedem Editor öffnen kannst (bei Userformen gibt immer zwei Dateien, eine mit dem Makrotext und eine mit den Grafik-Daten)
Gruß, Daniel
Anzeige
AW: kompletten VBA-Code sichern in txt-Datei
11.05.2010 08:39:17
Maxer
Vielen Dank ihr beide. Das hat mir sehr weiter geholfen.
@hajo
Ich habe den Code ausprobiert und er funktioniert tadellos. Nur ich verstehe nicht genau was da passiert. Kannst du mir das ein wenig erklären Hajo? Die Fragen kommen u. a. bei was macht der Befehl .countoflines? Welche Zeilen werden gezählt? Was macht ProcofLine? Für was war die Stringvariable sMacro gedacht wenn sie garnicht im Code auftaucht?
Oder kannst du mir eine Stelle im Internet sagen, wo ich die Antworten auf die Fragen bekomme?
Gruß Ron
Anzeige
AW: kompletten VBA-Code sichern in txt-Datei
11.05.2010 10:52:18
Hajo_Zi
Hallo Ron,
den Code habe ich nicht selber erstellt, das Stand auch im Code. Die Variable kannst Du dann löschen.
Gruß Hajo
;
Anzeige
Anzeige

Infobox / Tutorial

VBA-Code in eine TXT-Datei sichern


Schritt-für-Schritt-Anleitung

Um Deinen kompletten VBA-Code aus Excel in eine TXT-Datei zu exportieren, kannst Du den folgenden VBA-Code verwenden. Dieser Code sichert alle Makros und Module in die temporären Dateien Deines Systems.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu: Rechtsklick im Projektfenster > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    Public Sub alleMakrosExportieren()
       Dim vbc As Object, iCounter As Integer, cType As String
       For Each vbc In ThisWorkbook.VBProject.VBComponents
           With vbc.CodeModule
               For iCounter = 1 To .CountOfLines
                   If .ProcOfLine(iCounter, 0) > "" Then
                       Select Case vbc.Type
                           Case 1: cType = ".bas"
                           Case 2, 100: cType = ".cls"
                           Case 3: cType = ".frm"
                       End Select
                       ' Ablagepfad
                       Workbooks(ThisWorkbook.Name).VBProject.VBComponents(vbc.Name).Export _
                       "C:\Windows\Temp\" & vbc.Name & cType
                       Exit For
                   End If
               Next iCounter
           End With
       Next vbc
    End Sub
  4. Führe das Makro alleMakrosExportieren aus, um den Export zu starten.

  5. Überprüfe den Ordner C:\Windows\Temp\, um die exportierten Dateien zu finden.


Häufige Fehler und Lösungen

  • Fehler: "Der VBA-Compiler hat einen Fehler gefunden."

    • Lösung: Überprüfe, ob Du die Datei im richtigen Format gespeichert hast und ob der Code korrekt eingefügt wurde.
  • Fehler: "Die Datei kann nicht exportiert werden."

    • Lösung: Stelle sicher, dass Du Schreibzugriff auf den Zielordner hast (z.B. C:\Windows\Temp\).

Alternative Methoden

Wenn Du nicht den gesamten VBA-Code exportieren möchtest, kannst Du auch einzelne Module oder UserForms manuell exportieren:

  1. Gehe im VBA-Editor zum Projekt-Explorer.
  2. Rechtsklicke auf das gewünschte Modul oder UserForm.
  3. Wähle "Exportieren" und speichere die Datei im gewünschten Ordner.

Diese Methode ist besonders nützlich, wenn Du nur einen Teil Deines Codes sichern möchtest.


Praktische Beispiele

Ein Beispiel für das Importieren von VBA-Code könnte so aussehen:

Public Sub Import1()
    Dim vbc As Object
    For Each vbc In ThisWorkbook.VBProject.VBComponents
        ' Entferne bestehende Komponenten, bevor Du neue importierst
        ThisWorkbook.VBProject.VBComponents.Remove vbc
    Next vbc

    ' Importiere alle .bas, .cls, .frm Dateien
    Dim StDateiname As String
    StDateiname = Dir("C:\Windows\Temp\*.*")
    Do While StDateiname <> ""
        If UCase(Right(StDateiname, 4)) = ".BAS" Or UCase(Right(StDateiname, 4)) = ".FRM" Then
            ThisWorkbook.VBProject.VBComponents.Import "C:\Windows\Temp\" & StDateiname
        End If
        StDateiname = Dir
    Loop
End Sub

Tipps für Profis

  • Verwende den vba ctype, um verschiedene Typen von VBA-Komponenten effizient zu handhaben.
  • Nutze die vba txt-Funktionalität, um den Quellcode in einer für Dich lesbaren Form zu sichern.
  • Bei größeren Projekten empfiehlt es sich, regelmäßig Backups Deiner VBA-Projekte zu machen, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein VBA-Code korrekt exportiert wird?
Überprüfe die exportierten Dateien im Zielordner und teste, ob sie sich problemlos importieren lassen.

2. Was mache ich, wenn ich meinen Code verloren habe?
Wenn Du eine TXT-Datei mit Deinem VBA-Code hast, kannst Du ihn einfach wieder importieren, indem Du den Import-Code ausführst.

3. Kann ich den exportierten VBA-Code auch in anderen Programmen bearbeiten?
Ja, die exportierten .bas, .cls, und .frm Dateien sind normale Textdateien, die Du mit jedem Texteditor öffnen und bearbeiten kannst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige