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
' Überprüfung der VBA-Version für korrekte API-Deklarationen
#If VBA7 Then
    ' Deklaration für 64-bit Versionen von VBA
    ' Beispiel:
    ' Public/Private Declare PtrSafe Function BeispielFunktion Lib "Bibliothekname" (Parameter) As Rückgabetyp
#Else
    ' Deklaration für 32-bit Versionen von VBA
    ' Beispiel:
    ' Public/Private Declare Function BeispielFunktion Lib "Bibliothekname" (Parameter) As Rückgabetyp
#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
#If VBA7 Then
    ' Deklaration für 64-bit Versionen von VBA
    Declare PtrSafe Sub MessageBeep Lib "User32" (ByVal N As Long)
#Else
    ' Deklaration für 32-bit Versionen von VBA
    Declare Sub MessageBeep Lib "User32" (ByVal N As Long)
#End If
Links
- Office VBA und die Windows-API
 - Compatibility Between the 32-bit and 64-bit Versions of Office 2010
 - Working with VBA in Office 2010 (32-bit) and Office 2010 (64-bit)
 - Declaring API functions in 64 bit Office
 - API-Funktionen, die in der 64bit Version geändert wurden
 - API-Funktionen geordnet nach Windows Ausgaben
 







