Istruzione VBA Windows

di il
4 risposte

Istruzione VBA Windows

Esiste un'istruzione VBA che possa distinguere quale versione di Windows sto usando?
del tipo:

[i]If Win64 Then
   '64-bit Microsoft Office
    Private Declare PtrSafe Function apiGetComputerName _
      Lib "kernel32" Alias "GetComputerNameA" _
      (ByVal lpBuffer As String, nSize As Long) _
      As Long
  #Else
   '32-bit Microsoft Office
    Private Declare PtrSafe Function apiGetComputerName _
    Lib "kernel32" Alias "GetComputerNameA" _
    (ByVal lpBuffer As String, nSize As Long) _
    As Long
  #End If[/i]

4 Risposte

  • Re: Istruzione VBA Windows

    Hai postato nella sezione VB6. Stai proprio utilizzando VB6 o VBA in un prodotto Office? Devi SEMPRE precisarlo.

    Comunque leggi questo

    https://learn.microsoft.com/en-us/office/vba/language/concepts/getting-started/64-bit-visual-basic-for-applications-overview
  • Re: Istruzione VBA Windows

    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
  • Re: Istruzione VBA Windows

    Grazie per la tua acuta ed intelligente spiegazione.
    Potresti per favore essere un po' più specifico: cosa devo fare in concreto per evitare che ogni volta che apro il documento word
    mi esca sempre quel fastidioso messaggio: "Il codice del progetto deve essere aggiornato per l'uso a 64 bit, etc.etc."
  • Re: Istruzione VBA Windows

    Quindi da cosa sappiamo che parlavi di Word?

    In ogni caso, per essere specifico, hai letto i documenti di quei link?
Devi accedere o registrarti per scrivere nel forum
4 risposte