Partilhar via


Erro de compilação ao editar uma macro VBA na versão de 64 bits de um programa do Office 2010

Sintomas

Considere o seguinte exemplo:

  • Escreve um código de macro do Microsoft Visual Basic for Applications (VBA) que utiliza declarações Declare.

  • O seu código de macros do VBA utiliza constantes de compilação. Por exemplo, o código da macro utiliza uma das seguintes constantes de compilação:

    • #If VBA7
    • #If Win64
  • Utilize um bloco #Else num bloco condicional. No bloco #Else, utilize a sintaxe para uma inserção Declare concebida para ser executada no Microsoft Visual Basic for Applications 6.0.

  • Pode editar o código numa versão de 64 bits de um programa do Microsoft Office 2010.

  • Ao tentar alterar a inserção Declare no bloco #Else Estado.

Neste cenário, recebe a seguinte mensagem de erro:

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

Este problema só ocorre quando edita a macro VBA. Este problema não ocorre quando executa a macro.

Resolução

Para resolver este problema, ignore o "Erro de compilação" e execute o código VBA na versão de 64 bits do programa do Office 2010.

Mais Informações

Passos para reproduzir o problema

A Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita, incluindo, mas não se limitando a, as garantias implícitas de comercialização e/ou aptidão para um propósito específico. Este artigo pressupõe que o utilizador está familiarizado com a linguagem de programação demonstrada e as ferramentas utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais, nem criarão procedimentos adaptados às suas necessidades específicas.

Para obter mais informações sobre as opções de suporte disponíveis e sobre como contactar a Microsoft, visite o seguinte site da Microsoft:

https://support.microsoft.com/contactus

  1. Inicie a versão de 64 bits Microsoft Excel 2010 que está a ser executada num sistema operativo Windows de 64 bits.

    Nota

    Por predefinição, é aberto um novo livro.

  2. Prima Alt+F11 para iniciar a Visual Basic for Applications IDE do Visual Basic for Applications 7.0.

  3. No menu Inserir, clique em Módulo.

  4. Na janela de código que é exibida, copie e colar o seguinte código:

    #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. Em cada declaração Declare, altere manualmente o nome de qualquer parâmetro que seja transmitido de "ms" para "millisecs".

Quando alterar a segunda declaração Declare, o Visual Basic for Applications 7.0 irá comunicar um erro que indica que tem de utilizar PtrSafe. No entanto, o relatório está incorreto porque a linha está numa secção que só é executda no Visual Basic for Applications 6.0. O VBA 6.0 não utiliza PtrSafe. Por conseguinte, pode ignorar a mensagem de erro em segurança.