GUIDs per VBA erstellen (64-bit-kompatibel)

Fehlerhaft markierte API-Deklarationen

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).

Fehlerhaft markierte API-Deklarationen

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 aufrufen.

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

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar