coccodemamm ha scritto:
Esiste un'istruzione VBA che possa distinguere quale versione di Windows sto usando?
Suggerisco anche questa pagina
https://learn.microsoft.com/en-us/office/vba/language/concepts/getting-started/compiler-constants
dove si parla sempre di
development platform(s), non di sistema operativo.
Quindi non cadere dell'errore molto diffuso di credere che le costanti Win32 e Win64 indichino il bitness del sistema operativo: come riporta quella pagina, le due costanti servono ad indicare se il
prodotto specifico di Office è a 32 o a 64 bit.
Quindi con
Word a 32 bit che gira su un
sistema operativo a 64 bit questo codice
#if Win64 then
'questa sezione viene saltata perché Win64 = False
#else
'questa sezione viene eseguita perché è un ELSE di una IF la cui espressione è stata valutata FALSE
#end if
Da non confondere con la fondamentale VBA7 che è quella che discrimina la possibilità di uso di LongPtr e PtrSafe e LongLong
Di fatto se l'ambiente di sviluppo (leggasi programma della suite office) è a 64bit VBA7 è sempre TRUE visto che è stato introdotto proprio con Office 2010, il primo ad essere distribuito anche a 64bit. Le versioni precedenti sono sicuramente a 32bit.
Il concetto fondamentale è: le costanti di compilazione condizionale Win32 e Win64 non si riferiscono al sistema operativo ma al programma di office in cui si esegue quel codice vba.
Potrebbero diventare fondamentali nel momento in cui il codice è scritto in programmi "non Office" ma disponibili a 32 e a 64 bit dove non so se esiste anche la costante VBA7