Alcune applicazioni create per VBA a 32 bit possono dare problemi se aperte con Office a 64 bit, l’errore sotto riportato si è verificato nel tentativo di aprire il programma del’EPO IPscore (un DB in Access) con Office 2010 a 64 bit:
Nel dettaglio gli errori rilevati erano i seguenti:
– I Errore
– II Errore
Per il I errore:
la declaration per la 32 bit era la seguente:
- Declare Function GetOpenFileName Lib “comdlg32.dll” _ Alias “getOpenFileNameA” (pOpenfilename As OPENFLENAME) As Long
che è diventata per la 64 bit:
- Declare PtrSafe Function GetOpenFileName Lib “comdlg32.dll” _ Alias “getOpenFileNameA” (pOpenfilename As OPENFLENAME) As Long”
Nel II caso l’errore riguardava la funzione API Sleep:
nella versione 32 bit era:
- Public Declare Sub Sleep Lib “kernel32” ( _ByVal dwMilliseconds As Long)
in quella 64 bit, aggiungendo l’attributo PtrSafe, il codice è diventato:
- Public Declare PtrSafe Sub Sleep Lib “kernel32” ( _ByVal dwMilliseconds As Long).
Un utile link per verificare la corretta sintassi da applicare ai codici VBA per Office 64 bit è il seguente: www.jkp-ads.com
Di norma, come mostrato nel link sopra riportato, problemi relativi la gestione delle funzioni si possono risolvere così:
- aggiungere l’attributo “PtrSafe” dopo dichiarazione “declare”
- modificare la variabile “Long” in “LongPtr”
Lascia un commento
Devi essere connesso per inviare un commento.