Progetti VBA 32 bit in Ambiente Office 64 bit
Progetti VBA 32 bit in Ambiente Office 64 bit
Aprire un file Ms Excel o Ms Access che contiene un progetto VBA progettato per l’ambiente a 32 bit, potrebbe risultare impossibile se si utilizza una versione di Office a 64 bit. Microsoft infatti consiglia ancora l’installazione di Office a 32 bit proprio per questo motivo, dato che la presenza di progetti VBA 32 bit è ancora numerosa.
Nei progetti più semplici potrebbero essere poche le librerie a 32 bit richieste, per cui potrebbe valer la pena di fare un tentativo di convertire la dichiarazione della libreria a 32 usando una sintassi che la dichiara in ambiente protetto compatibile.
Le librerie esterne, nei progetti VBA, sono indicate nella parte di dichiarazione di un modulo, all’inizio dello stesso.
La strada può essere quella di verificare l’ambiente in cui sta girando il progetto (#If Win64…) e creare due dichiarazioni distinte alla dll una per l’ambiente a 64 bit e una per quella a 32.
La parte nell’ambiente a 64bit deve contenere l’istruzione PtrSafe
Le librerie devono essere dichiarate col prefisso Private
#If Win64 Then
Private Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal IpBuffer As String, nSize As Long) As Long
Private Declare PtrSafe Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
#Else
Private Declare Function GetUserName Lib “advapi32.dll” Alias “GetUserNameA” _
(ByVal IpBuffer As String, nSize As Long) As Long
Private Declare Function GetComputerName Lib “kernel32” Alias “GetComputerNameA” _
(ByVal lpBuffer As String, nSize As Long) As Long
#End If
Altre informazioni si possono trovare in questo articolo:
https://codekabinett.com/rdumps.php?Lang=2&targetDoc=windows-api-declaration-vba-64-bit