Access 97 in die Moderne holen: Tools und Tipps zur Konvertierung

Warum Du Dich jetzt kümmern solltest

Access 97 ist über 25 Jahre alt.
Kein Support. Keine Kompatibilität mit Office 64 Bit.
Und spätestens mit Windows 11 ist Schluss – die .mdb lässt sich oft nicht mal mehr öffnen.

Wenn Du also noch eine 97er-Datenbank im Haus hast: jetzt modernisieren.
Sonst steht der Betrieb plötzlich still.

Erste Hürde: Öffnen der .mdb-Datei

Moderne Access-Versionen können Access-97-Dateien nicht direkt öffnen.
Du brauchst Access 2003 oder 2010 als Zwischenschritt.

Ablauf:

  1. Access 2003: .mdb öffnen → als Access 2000 oder 2002 speichern
  2. Access 2010/2013: erneut öffnen und als .accdb speichern

Wenn Du das nicht mehr selbst kannst: virtuelle Maschine, z. B. mit Windows XP + Access 2003.

Tools für die Migration

ToolZweck
Access 2003 (oder 2010)Zwischenschritt zum Öffnen
Office 32 BitKompatibel mit altem DAO/VBA
MZ-ToolsAnalyse von VBA-Projekten
Access Analyzer (FMS)Abhängigkeitsprüfung, Performance
VBA-Inspector (Eigenbau)Suche nach Altlasten im Code

Typische Probleme bei der Umstellung

1. API-Deklarationen ohne PtrSafe

Declare Function GetTickCount Lib "kernel32" () As Long

Muss ersetzt werden durch:

#If VBA7 Then
    Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
#Else
    Declare Function GetTickCount Lib "kernel32" () As Long
#End If

2. DAO 3.5 Referenz fehlt

Alte Datenbanken nutzen DAO 3.5 – das gibt’s nicht mehr.
Du musst auf DAO 3.6 oder Microsoft Office xx.0 Access database engine object library umstellen.

Im Code: Typen explizit deklarieren:

Dim db As DAO.Database
Dim rs As DAO.Recordset

3. Formulare ohne Ereignisbindung

Access 97 hat Ereignisprozeduren teilweise als Text gespeichert.
Beim Öffnen in Access 2016+ fehlen dann die Bindungen.
Manuelle Nachpflege nötig.

Empfehlung: Schrittweises Vorgehen

1. Sicherung der Originaldatenbank

2. Umwandlung in Access 2000 oder 2002

3. Umwandlung in .accdb

4. Referenzen prüfen und korrigieren

5. Code-Scan auf veraltete Syntax

6. Tests mit 64 Bit Office

7. Performance und Funktionalität testen

Eigene Scans auf Altlasten

Public Sub ScanneDeklarationen()
    Dim comp As Object, i As Long, zeile As String
    For Each comp In Application.VBE.ActiveVBProject.VBComponents
        For i = 1 To comp.CodeModule.CountOfLines
            zeile = comp.CodeModule.Lines(i, 1)
            If InStr(zeile, "Declare Function") > 0 And InStr(zeile, "PtrSafe") = 0 Then
                Debug.Print "Fehlendes PtrSafe in: " & comp.Name & " Zeile " & i
            End If
        Next i
    Next
End Sub

Und wenn gar nichts mehr geht?

Dann:

  • Struktur nachbauen (Tabellen, Beziehungen, Formulare)
  • Daten per TransferDatabase importieren
  • Module stückweise übernehmen
  • oder: nur die Logik extrahieren und komplett neu bauen

Access 97 war robust – aber es ist durch.

Wenn Du es heute noch betreibst, brauchst Du dringend eine Exit-Strategie.
Mit den richtigen Tools und etwas Geduld kannst Du die Lösung retten.
Oder gleich besser machen als vorher.

Wenn Du willst, helf ich Dir dabei – pragmatisch, systematisch, ohne viel Gewese.

Nach oben scrollen