Probleme bei Verweisen mit verschiedenen Versionen

Wenn Sie Datenbanken entwickeln, die auf Rechnern eingesetzt werden sollen, die eine ältere Version von Office verwenden, kann es zu Problemen kommen. Abgesehen davon, dass die Datenbank Funktionen enthalten könnte, die auf der Zielplattform nicht verfügbar sind, kommt es vor allem zu Problemen mit Verweisen. Ein Beispiel sind Verweise auf die Office-Anwendungen. Haben Sie Verweise zu den Bibliotheken von Word, Excel, Outlook et cetera, die sich auf die aktuelle Office-Version beziehen, und stellt der Zielrechner diese nicht bereit, kann es sein, dass die Anwendung nicht wie gewünscht funktioniert. Wir schauen uns an, wie die Probleme entstehen und wie wir diese lösen können.

Video passend zu diesem Artikel:

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

Ausgangssituation

Es gibt verschiedene Konstellationen, die Probleme mit Verweisen begünstigen. Wir schauen uns in diesem Beitrag eine davon an – dabei entwickeln wir eine Access-Datenbank, welche Verweise der Version 16.0 von Office hinzufügt und geben diese dann weiter an einen Rechner, bei dem noch die Version 14.0 verwendet wird.

Entsprechend der Version 16.0 von Office landen auch die mit Office gelieferten Bibliotheken in dieser Version in der Datenbank, genauer gesagt im Verweise-Dialog des VBA-Projekts (siehe Bild 1). Hier haben wir Verweise auf die Bibliotheken für Excel, Office, Outlook und Word jeweils in der Version 16.0 hinzugefügt – eine andere war auch nicht verfügbar.

Ausgangssituation im Verweise-Dialog

Bild 1: Ausgangssituation im Verweise-Dialog

Test auf einem älteren System

Danach haben wir diese Datenbankdatei auf eine virtuelle Maschine kopiert und diese dort geöffnet. Da die Datenbank bis auf die hinzugefügten Verweise leer ist, treten beim Öffnen auch keine Probleme auf – wie es sonst der Fall ist, wenn man beispielsweise direkt VBA-Code ausführt, der aufgrund fehlender oder fehlerhafter Verweise zu Fehlern führt. Wechseln wir dann jedoch in den VBA-Editor und öffnen den Verweise-Dialog, finden wir die Situation aus Bild 2 vor.

Einige Verweise werden als NICHT VORHANDEN gekennzeichnet.

Bild 2: Einige Verweise werden als NICHT VORHANDEN gekennzeichnet.

Einige der hinzugefügten Verweise, namentlich die für die Excel-, Outlook- und Word-Bibliotheken, werden als NICHT VORHANDEN markiert. Dementsprechend können wir die Elemente dieser Verweise auch nicht unter VBA nutzen.

Manuelles Beheben des Fehlers

Wenn die Datenbank in der Variante mit offenem Quellcode, also nicht als .accde-Datenbank, weitergegeben wurde, können Sie ihm Anweisungen zum Beheben des Problems geben.

Möglicherweise versucht er, einfach die richtigen Verweise hinzuzufügen, also beispielsweise den Verweis auf die Bibliothek Microsoft Excel 14.0 Object Library. Der Versuch ist möglich, allerdings mündet dieser in der Anzeige der Fehlermeldung aus Bild 3.

Fehler beim Versuch, einen Verweis durch den älteren Verweis zu ersetzen

Bild 3: Fehler beim Versuch, einen Verweis durch den älteren Verweis zu ersetzen

Das Problem entsteht dadurch, dass die beiden Bibliotheken die gleiche GUID aufweisen und wir nicht zwei Verweise mit der gleichen GUID zu den Verweisen eines Projekts hinzufügen können.

Der korrekte Weg wäre, die als NICHT VORHANDEN markierten Einträge zunächst zu entfernen, indem man die Haken aus den entsprechenden Kontrollkästchen entfernt (siehe Bild 4).

Entfernen der als NICHT VORHANDEN markierten Verweise

Bild 4: Entfernen der als NICHT VORHANDEN markierten Verweise

Anschließend fügt man einfach die gewünschten Verweise in der verfügbaren Version erneut hinzu (siehe Bild 5). Sofern die übermittelte Datenbank keine Objekte, Eigenschaften oder Methoden einer neueren Version der Bibliotheken verwendet, sollte die Anwendung nun funktionieren.

Hinzufügen der Verweise in der benötigten Version, hier 14.0

Bild 5: Hinzufügen der Verweise in der benötigten Version, hier 14.0

Automatisiertes Anpassen der Verweise

Allerding wollen wir dem Benutzer kaum zumuten, mit jeder neuen Version unserer Datenbankanwendung die Verweise neu einzustellen. Also überlegen wir uns einen Weg, wie wir dies per VBA automatisieren können. Wie nicht anders zu erwarten, bietet das Objektmodell von Access die Möglichkeit des Zugriffs auf die Verweise.

Verweise per VBA erneuern

Theoretisch sollte es möglich sein, die Verweise einer Anwendung, die als NICHT VORHANDEN markiert sind, per VBA zu erneuern – vorausgesetzt, diese sind auf dem Zielrechner vorhanden und installiert. Dabei gibt es allerdings Ausnahmen wie beispielsweise die in diesem Beispiel verwendeten Verweise.

Wir haben einmal versucht, die Einträge für die nicht vorhandenen Verweise auf dem Zielrechner mit Office 14 zu entfernen.

Dazu haben wir die folgende Prozedur verwendet. Diese durchläuft in einer For…Next-Schleife mit der Schrittweite -1 alle Referenzen in einer Schleife von der Anzahl der Verweise bis zum Wert 1. Innerhalb der Schleife referenziert die Prozedur die Referenz mit dem Index aus der Variablen lngIndex mit der Variablen ref.

Public Sub RemoveBrokenReferences()
     Dim ref As Reference
     Dim lngIndex As Long
     For lngIndex = References.Count To 1 Step -1
         Set ref = References(lngIndex)
         If ref.IsBroken Then
             References.Remove ref
         End If
     Next lngIndex
End Sub

Wenn sie auf den ersten Verweis mit dem Vermerk NICHT VORHANDEN stößt, löst dies den Fehler aus Bild 6 aus. Was geschieht hier? Offensichtlich kann die Bibliothek hinter diesem Verweis nicht gefunden werden, und das Problem ist, dass VBA den Verweis nicht entfernen kann, wenn die Bibliothek nicht vorhanden ist.

Fehler beim Versuch, einen nicht vorhandene Verweis per VBA zu entfernen

Bild 6: Fehler beim Versuch, einen nicht vorhandene Verweis per VBA zu entfernen

Ehrlich gesagt haben wir keine Methode gefunden, wie man diese Verweise dennoch entfernen kann. Daher empfehlen wir eine von zwei alternativen Methoden.

Alternative Methoden für Verweisprobleme

[

Es gibt beispielsweise die folgenden beiden Möglichkeiten, um die beschriebenen Probleme mit Verweisen zu umgehen:

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar