Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Síntomas
Imagine la siguiente situación:
Escriba un código de macro de Microsoft Visual Basic para Aplicaciones (VBA) que use instrucciones Declare.
El código de macro de VBA usa constantes de compilación. Por ejemplo, el código de macro usa una de las siguientes constantes de compilación:
- #If VBA7
- #If Win64
Se usa un bloque de #Else en un bloque condicional. En el bloque #Else, se usa la sintaxis de una instrucción Declare diseñada para ejecutarse en Microsoft Visual Basic para Aplicaciones 6.0.
El código se edita en una versión de 64 bits de un programa de Microsoft Office 2010.
Intenta cambiar la instrucción Declare en el bloque #Else.
En esta situación, aparece este mensaje de error:
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 solo se produce cuando se edita la macro vba. Este problema no se produce al ejecutar la macro.
Solución
Para resolver este problema, omita el "Error de compilación" y ejecute el código VBA en la versión de 64 bits del programa Office 2010.
Más información
Pasos para reproducir el problema
Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita, incluyendo, pero sin limitarse, a las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. En este artículo se da por supuesto que ya conoce el lenguaje de programación que se muestra, así como las herramientas empleadas para crear y depurar procedimientos. Los profesionales de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos adaptados a sus necesidades específicas.
Para obtener más información sobre las opciones de soporte técnico que están disponibles y sobre cómo ponerse en contacto con Microsoft, visite el siguiente sitio web de Microsoft:
https://support.microsoft.com/contactus
Inicie la versión de 64 bits de Microsoft Excel 2010 que se ejecuta en un sistema operativo Windows de 64 bits.
Nota:
De forma predeterminada, se abre un nuevo libro.
Presione ALT+F11 para iniciar la ventana ide de Visual Basic para Aplicaciones 7.0.
En el menú Insertar, haga clic en Módulo.
En la ventana de código que aparece, copie y pegue el código siguiente:
#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
En cada instrucción Declare, cambie manualmente el nombre de cualquier parámetro que se pase de "ms" a "millisecs".
Al cambiar la segunda instrucción Declare, Visual Basic para Aplicaciones 7.0 notificará un error que indica que tiene que usar PtrSafe. Sin embargo, el informe es incorrecto porque la línea está en una sección que solo se ejecuta en Visual Basic para Aplicaciones 6.0. VBA 6.0 no usa PtrSafe. Por lo tanto, puede omitir de forma segura el mensaje de error.