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:
- Access 2003:
.mdböffnen → als Access 2000 oder 2002 speichern - Access 2010/2013: erneut öffnen und als
.accdbspeichern
Wenn Du das nicht mehr selbst kannst: virtuelle Maschine, z. B. mit Windows XP + Access 2003.
Tools für die Migration
| Tool | Zweck |
|---|---|
| Access 2003 (oder 2010) | Zwischenschritt zum Öffnen |
| Office 32 Bit | Kompatibel mit altem DAO/VBA |
| MZ-Tools | Analyse 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
TransferDatabaseimportieren - 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.


