Condividi tramite


Errore di compilazione quando si modifica una macro VBA nella versione a 64 bit di un programma di Office 2010

Sintomi

Considerare lo scenario descritto di seguito:

  • Si scrive un codice di macro Microsoft Visual Basic, Applications Edition (VBA) che usa istruzioni Declare.

  • Il codice della macro VBA usa costanti di compilazione. Ad esempio, il codice della macro usa una delle costanti di compilazione seguenti:

    • #If VBA7
    • #If Win64
  • Si usa un blocco #Else in un blocco condizionale. Nel blocco #Else si usa la sintassi per un'istruzione Declare progettata per l'esecuzione in Microsoft Visual Basic, Applications Edition 6.0.

  • Il codice viene modificato in una versione a 64 bit di un programma di Microsoft Office 2010.

  • Si tenta di modificare l'istruzione Declare nel blocco #Else.

In questo caso, viene visualizzato il seguente messaggio di errore:

Microsoft Visual Basic for Applications

Compile error:

The code in this project must be updated for use on 64-bit
systems. Please review and update Declare statements and then
mark them with the PtrSafe attribute.

Nota

Questo problema si verifica solo quando si modifica la macro VBA. Questo problema non si verifica quando si esegue la macro.

Risoluzione

Per risolvere questo problema, ignorare l'errore di compilazione ed eseguire il codice VBA nella versione a 64 bit del programma Office 2010.

Ulteriori informazioni

Procedura per riprodurre il problema

Microsoft fornisce esempi di programmazione solo a scopo illustrativo, senza alcuna garanzia espressa o implicita, comprese, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. I tecnici Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare procedura, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare procedure atte a soddisfare specifiche esigenze.

Per altre informazioni sulle opzioni di supporto disponibili e su come contattare Microsoft, visitare il seguente sito Web Microsoft:

https://support.microsoft.com/contactus

  1. Avviare la versione a 64 bit di Microsoft Excel 2010 in esecuzione in un sistema operativo Windows a 64 bit.

    Nota

    Per impostazione predefinita, viene aperta una nuova cartella di lavoro.

  2. Premere ALT+F11 per avviare la finestra IDE Visual Basic, Applications Edition 7.0.

  3. Nel menu Inserisci, fare clic su Modulo.

  4. Nella finestra del codice visualizzata copiare e incollare il codice seguente:

    #If VBA7 Then
        Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
    #Else
        Private Declare Sub Sleep Lib "kernel32" (ByVal ms as Long)
    #End If
    
  5. In ogni istruzione Declare modificare manualmente il nome di qualsiasi parametro passato da "ms" a "millisecs".

Quando si modifica la seconda istruzione Declare, Visual Basic, Applications Edition 7.0 segnala un errore che indica che è necessario usare PtrSafe. Il report non è tuttavia corretto perché la riga si trova in una sezione eseguita solo in Visual Basic, Applications Edition 6.0. VBA 6.0 non usa PtrSafe. Pertanto, è possibile ignorare in modo sicuro il messaggio di errore.