Das Konvertieren einer Access 97-Datenbank auf einen aktuellen Stand (z. B. Access 2016/2019/365) ist grundsätzlich möglich, erfordert aber ein paar Zwischenschritte, da moderne Access-Versionen das alte *.mdb-Format von Access 97 nicht direkt öffnen können.
Hier ist eine bewährte Schritt-für-Schritt-Anleitung:
1. Backup erstellen!
🔧 Schritt-für-Schritt-Konvertierung Access 97 → aktuell
Mach zuerst unbedingt eine Sicherheitskopie der originalen *.mdb-Datei.
2. Access 2003 (oder 2002/XP) verwenden
Access 97-Datenbanken lassen sich nicht direkt in Access 2016/2019/365 öffnen. Du brauchst eine Zwischenversion, um sie zuerst auf das Access 2000/2002-Format zu bringen.
Optionen:
- Nutze Access 2003 (oder Access XP/2002), um die Datei zu öffnen.
- Beim Öffnen wirst du gefragt, ob du die Datenbank konvertieren möchtest.
- Wähle das Format Access 2000-Dateiformat.
Das Ergebnis ist dann eine neue *.mdb-Datei im Format 2000–2003.
3. Access 2010 oder neuer verwenden
Access 2010+ kann das 2000/2002-2003-Format öffnen.
- Öffne die konvertierte Datei (*.mdb) in Access 2010, 2013, 2016, 2019 oder 365.
- Access bietet dir an, die Datenbank in das aktuelle Format zu konvertieren (.accdb).
- Bestätige und speichere die neue Datei.
4. Nachbearbeitung
- Teste Formulare, Berichte, VBA-Code und Makros gründlich.
- Ersetze ggf. veraltete Funktionen oder nicht mehr unterstützte VBA-Befehle.
- Falls DAO- oder ADO-Komponenten genutzt werden: Referenzen im VBA-Editor prüfen und ggf. aktualisieren.
💡 Tipps & Tools
- Virtuelle Maschine: Wenn du keine alte Access-Version hast, kannst du eine VM mit Windows XP und Access 2003 nutzen.
- Access Runtime-Versionen: Auch alte Access-Runtime-Installationen können helfen.
- Office 365 Umgebung: Nutze nicht direkt Teams/OneDrive beim Arbeiten mit *.mdb, das kann Probleme machen.
⚠️ Häufige Stolperfallen
- Kennwortschutz oder Benutzersicherheit: Alte MDW-Dateien (Arbeitsgruppeninformationen) können den Zugriff blockieren.
- ActiveX-Steuerelemente: Manche funktionieren in neuen Versionen nicht mehr.
- Fehlende Referenzen im VBA-Code: Nach der Konvertierung muss der Verweis evtl. manuell neu gesetzt werden.
Dazu ein kleines VBA-Skript, das du in deiner konvertierten Access-Datenbank (nach der Umwandlung von Access 97 → 2000/2003 → accdb) verwenden kannst. Es prüft:
- fehlende Referenzen,
- die DAO/ADO-Version,
- veraltete Funktionen (nur einfache Textsuche als Hinweis),
- Makros in Formularen.
🧠 Ziel: Alte Technik aufspüren und modernisieren
📜 VBA-Modul: mod_DiagnoseAccessAltlasten
Option Compare Database
Option Explicit
Sub PrüfeVerweiseUndAltlasten()
Dim ref As Reference
Dim fehlendeVerweise As Boolean
Debug.Print "🔍 Verweisprüfung..."
For Each ref In Application.References
If ref.IsBroken Then
Debug.Print "❌ Fehlender Verweis: " & ref.FullPath
fehlendeVerweise = True
Else
Debug.Print "✅ Verweis OK: " & ref.FullPath
End If
Next ref
If fehlendeVerweise Then
MsgBox "Es gibt fehlende Verweise. Bitte im VBA-Editor unter 'Extras > Verweise' prüfen.", vbExclamation
Else
MsgBox "Alle Verweise scheinen in Ordnung zu sein.", vbInformation
End If
Debug.Print String(50, "-")
Debug.Print "📂 Scanne alle Module nach potenziellen Altlasten (DoCmd, SendKeys, veraltete Funktionen)..."
Dim c As CodeModule
Dim i As Long
Dim lineText As String
Dim altlasten As Collection
Set altlasten = New Collection
For Each c In Application.VBE.ActiveVBProject.VBComponents
If c.Type = vbext_ct_StdModule Or c.Type = vbext_ct_Document Then
For i = 1 To c.CountOfLines
lineText = c.Lines(i, 1)
If InStr(lineText, "SendKeys") > 0 Or _
InStr(lineText, "DoCmd.RunCommand") > 0 Or _
InStr(lineText, "DoCmd.OutputTo") > 0 Then
altlasten.Add c.Name & " Zeile " & i & ": " & Trim(lineText)
End If
Next i
End If
Next c
If altlasten.Count > 0 Then
Debug.Print "⚠️ Gefundene Altlasten im Code:"
Dim a
For Each a In altlasten
Debug.Print a
Next a
Else
Debug.Print "✅ Keine offensichtlichen Altlasten im Code gefunden."
End If
MsgBox "Analyse abgeschlossen. Details im Direktfenster (STRG + G).", vbInformation
End Sub
💡 Bonus: Was du manuell prüfen solltest
- Menüleisten (Commandbars): Access 97 hatte eigene, die ab Access 2007 ersetzt wurden.
Set db = CurrentDb
: Sollte heute explizit als DAO oder ADO deklariert sein.DoCmd.SendObject
: Ersetzt durch Outlook-Automation oder Mail-Add-Ins.
Keine Antworten