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

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert