Office 64bit VBA und Windows API
Gepostet am: Feb 18, 2011 3:41:57 PM
Einleitung
Wer schon mal probiert hat unter einer 64bit Version von Office auf die API Funktionen zuzugreifen, wird schnell die Fehlermeldung bekommen:
Fehler beim Kompilieren: Der Code in diesem Projekt muss für die Verwendung auf 64-Bit-Systemen aktualisiert werden. Überarbeiten Sie Declare-Anweisungen, und markieren sie mit dem PtrSafe-Attribut.
Dies kann man jedoch recht leicht umgehen, in dem man die API sowohl für die 64bit Version und für die 32bit Version deklariert. Dabei empfiehlt sich folgendes Schema:
unterschiedliche Deklarationen für 32bit und 64bit Office
#If VBA7 Then 'Deklaration für 64bit [Public/Private] Declare PtrSafe Function ...#Else 'Deklaration für 32bit [Public/Private] Declare Function ...#End If
Dies funktionierte bei mir bei über hundert VBA-Programme, mal abgesehen von den API-Funktionen, die in der 64bit Version von Windows geändert wurden. Ich habe jedoch in meinen Programmen einen solchen Code gefunden.
Beispiel
Beispiel
#if VBA7 then Declare PtrSafe Sub MessageBeep Lib "User32" (ByVal N AS Long)#else Declare Sub MessageBeep Lib "User32" (ByVal N AS Long)#end if