Bild 1: Fehlerhaft markierte API-Deklarationen
Access kann ab Version 2010 auch als 64-Bit-Variante installiert werden. Ab Version 2019 ist 64-Bit die Voreinstellung bei der Installation. Wir stellen in dieser Beitragsreihe die Änderungen vor, die für die Verwendung verschiedener oft genutzter VBA-Prozeduren und Komponenten unter der 64-Bit-Version nötig sind. Dabei wollen wir auch dafür sorgen, dass diese unter der 32-Bit-Version von Access älter als 2010 ebenfalls noch laufen. Den Anfang machen wir mit der 64-Bit-Version der in vielen Beispiellösungen verwendeten Funktion zum Ermitteln von GUIDs.
Wenn Sie die alte Version unter Access in der 64-Bit-Version kompilieren wollen, stoßen Sie schnell auf einige der Inkompatibilitäten, und zwar noch vor dem Kompilieren. Die beiden API-Funktionen CoCreateGuid und StringFromGUID2 werden rot angezeigt (siehe Bild 1).
Bild 1: Fehlerhaft markierte API-Deklarationen
Damit sich das ändert, fügen Sie zwischen die beiden Schlüsselwörter Declare und Function das Schlüsselwort PtrSafe ein:
Private Declare PtrSafe Function CoCreateGuid Lib "ole32.dll" (tGUIDStructure As GUID) As Long Private Declare Function StringFromGUID2 Lib "ole32.dll" (rGUID As Any, ByVal lpstrClsId As Long, ByVal cbMax As Long) As Long
Damit entfällt bereits die rote Markierung dieser Funktionsdeklarationen und Sie können den Befehl Debuggen|Kompilieren von
Dieser liefert einen Kompilierfehler für den Aufruf der Funktion StringFromGUID2, wo für den zweiten Parameter eine Typunverträglichkeit angezeigt wird. Dies ändern wir, indem wir den Typ des zweiten Parameters in der Deklaration der API-Funktion StringFromGUID2 von Long in LongPtr ändern:
Private Declare Function StringFromGUID2 Lib "ole32.dll" (rGUID As Any, ByVal lpstrClsId As LongPtr, ByVal cbMax As Long) As Long