Lektionen/Workflow

Module versionieren mit SaveAsText & LoadFromText

Fortgeschritten10 Min. Lesezeit

Access speichert deine Module binär in der .accdb-Datei. Das heißt: kein Git, kein Diff, kein vernünftiges Code-Review — und wenn die Datei kaputtgeht, ist der Code mit weg. Zwei versteckte Access-Befehle lösen das Problem: SaveAsText und LoadFromText. Sie machen aus einem Modul eine ganz normale Textdatei und wieder zurück.

SaveAsText: Modul → Textdatei

Application.SaveAsText exportiert ein beliebiges Objekt als Text. Für ein Standardmodul sieht das so aus:

Application.SaveAsText acModule, "Modul1", "C:\vba\Modul1.bas"

Der erste Parameter ist der Objekttyp. Die wichtigsten:

KonstanteObjekt
acModuleStandard- und Klassenmodul
acFormFormular (inkl. Code dahinter)
acReportBericht
acMacroMakro

LoadFromText: Textdatei → Modul

Der Rückweg ersetzt (oder erstellt) das Objekt aus der Textdatei:

Application.LoadFromText acModule, "Modul1", "C:\vba\Modul1.bas"

Achtung: LoadFromText überschreibt das gleichnamige Objekt ohne Rückfrage. Arbeite auf einer Kopie der Datenbank, bis der Ablauf sitzt.

Alle Module auf einmal exportieren

Von Hand jedes Modul einzeln zu exportieren ist mühsam. Diese Prozedur läuft über alle Standardmodule und schreibt sie in einen Ordner:

Public Sub ExportiereAlleModule(ByVal ziel As String)
    Dim comp As Object          ' VBComponent
    Dim exportiert As Long

    For Each comp In Application.VBE.ActiveVBProject.VBComponents
        ' 1 = vbext_ct_StdModule, 2 = vbext_ct_ClassModule
        If comp.Type = 1 Or comp.Type = 2 Then
            Application.SaveAsText acModule, comp.Name, _
                ziel & "\" & comp.Name & ".bas"
            exportiert = exportiert + 1
        End If
    Next comp

    Debug.Print exportiert & " Modul(e) exportiert nach " & ziel
End Sub

Aufruf im Direktfenster (Strg+G):

ExportiereAlleModule "C:\vba"

Damit der Zugriff auf Application.VBE funktioniert, muss in Access einmalig Zugriff auf das VBA-Projektobjektmodell vertrauen aktiviert sein (Datei → Optionen → Trust Center → Einstellungen → Makroeinstellungen).

Warum sich das lohnt

Sobald deine Module als .bas-Dateien vorliegen, steht dir die ganze Welt offen:

  • Git — jede Änderung nachvollziehbar, nichts geht verloren.
  • Diffs & Code-Reviews — sehen, was sich geändert hat, Zeile für Zeile.
  • Echte Editoren — mit ordentlicher Suche, Refactoring und KI-Unterstützung arbeiten, statt im engen VBA-Editor.

Der typische Kreislauf sieht dann so aus:

Access ──SaveAsText──▶  Modul1.bas  ──▶  Editor / Git / Review
                                             │
Access ◀──LoadFromText──  Modul1.bas  ◀──────┘

Zusammengefasst

  • SaveAsText schreibt ein Modul als Textdatei, LoadFromText liest es zurück.
  • LoadFromText überschreibt ohne Nachfrage — immer auf einer Kopie testen.
  • Eine kleine Schleife über VBComponents exportiert das ganze Projekt auf einmal.
  • Als Textdateien lassen sich Module versionieren, diffen und mit echten Werkzeugen bearbeiten.
Nächste Lektion
Excel aus Access steuern