Aparece el mensaje de error "No coinciden los tipos" cuando ejecuta una macro de VBA en una versión de 64 bits de una aplicación de Office 2010

Seleccione idioma Seleccione idioma
Id. de artículo: 983246 - Ver los productos a los que se aplica este artículo
El Soporte técnico para Windows Vista Service Pack 1 (SP1) finaliza el 12 de julio de 2011. Para seguir recibiendo actualizaciones de seguridad para Windows, asegúrese de que está ejecutando Windows Vista con Service Pack 2 (SP2). Para obtener más información, visite la página Web de Microsoft siguiente:
Finaliza el soporte para algunas versiones de Windows
La revisión que resuelve un problema similar en Windows 7 SP1 y Windows Server 2008 R2 SP1 se describe en el artículo 2640696 de Microsoft Knowledge Base. Para obtener más información acerca de 2640696 KB, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2640696 Una aplicación de ADO que se compila en Windows 7 SP1 o en Windows Server 2008 R2 SP1 no se ejecuta en las versiones anteriores de Windows
Expandir todo | Contraer todo

En esta página

Síntomas

Suponga que tiene una de Microsoft Visual Basic para Aplicaciones (VBA) macro que se ejecuta correctamente en una versión de 32 bits de una aplicación de Microsoft Office. Sin embargo, esta macro de VBA no se ejecuta correctamente en una versión de 64 bits de una aplicación de Microsoft Office 2010 en una versión de 64 bits de Windows.

Normalmente, este problema se produce cuando la macro de VBA utiliza algunas API que dependen de la plataforma de Microsoft ActiveX Data Objects (ADO). Por ejemplo, ejecutar una macro de VBA que utiliza la propiedad RecordCount de un objeto Recordset de ADO de forma similar al siguiente:
Dim rs as ADODB.Recordse
LONG recordCount


...
recordCount = rs.RecordCount
En este ejemplo, recibirá un mensaje de error "No coinciden los tipos" al ejecutar la macro en una versión de 64 bits de una aplicación de Office 2010.

Notas
  • Puede instalar la versión de 64 bits de Office 2010 en los siguientes sistemas operativos de Windows:
    • ediciones de 64 bits de Windows Server 2003 Service Pack 2 que tienen instalado de MSXML 6.0
    • ediciones x 64 de Windows Vista Service Pack 1 y versiones posteriores
    • ediciones de 64 bits de Windows Server 2008 y versiones posteriores
    • ediciones x 64 de Windows 7
    • Windows Server 2008 R2
  • Para ver una lista de las API de ADO que son dependientes de la plataforma, consulte el "Obtener más información.

Causa

Algunas API de ADO son la plataforma dependiente en ADO 2.7 y versiones posteriores. En versiones de 64 bits de Windows, estas API ADO procesar argumentos utilizando un tipo de datos de 64 bits (como el tipo de datos largo ). Sin embargo, las aplicaciones que utilizan estas API seguir utilizan el tipo de datos LONG . Por lo tanto, recibirá un mensaje de error "No coinciden los tipos" cuando intenta ejecutar la macro.

Más información

Notas
  • En Windows Vista, Windows Server 2008, o en versiones posteriores de Windows, la biblioteca de tipos 6.0 de ADO y la biblioteca de tipo 6.1 ADO comparten la misma biblioteca de tipos (LIBID) de ID. Visual Basic sólo puede mostrar una de ellas en la lista de Referencias disponibles a la vez. Para buscar manualmente la biblioteca de tipos 6.0 de ADO (Msado60.tlb) en esta situación, vaya a la ubicación siguiente: % programa files%\common comunes\System\ADO. Visual Basic muestra automáticamente la biblioteca de tipos 6.0 de ADO en la lista de referencias disponibles si la referencia a la biblioteca de tipos 6.0 de ADO se agregó al proyecto actual.
  • Considere el escenario donde usted es un desarrollador de C++ e incluir la siguiente línea de código en la aplicación:
     
    #import msado15.dll
    


    Considere un escenario que no utilizan MSJRO y volver a compilar la aplicación en Windows Vista, Windows Server 2008 o en versiones posteriores de Windows. En Windows Vista, Windows Server 2008 o en versiones posteriores de Windows, debe ejecutar la aplicación compilada. En este escenario, debe cambiar #import msado15.dll a la siguiente:
     
    #import msado60.tlb
    

    Considere el escenario que utiliza MSJRO y volver a compilar una aplicación que se debe ejecutar en Windows Vista, Windows Server 2008 o en una versión posterior de Windows. En este escenario, debe cambiar #import msado15.dll a la siguiente:
     
    #import msado28.tlb
    

    Considere el escenario que volver a compilar la aplicación en Windows XP o en Windows Server 2003. O bien, la aplicación recompilada debe ejecutarse en Windows XP o en Windows Server 2003. En este escenario, debe cambiar #import msado15.dll a la siguiente:
     
    #import msado28.tlb
    
  • Si usted es un desarrollador de C++, VB6 o .NET y aplicado "método 1" en la sección "Solución" que se ha descrito en el artículo de Microsoft Knowledge Base 2517589 (esta solución se ha quitado una vez que se publicó 2640696), no tiene que cambiar el código. Para obtener más información acerca de 2517589 KB, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    2517589Una aplicación de ADO no se ejecuta en sistemas operativos de nivel inferior se vuelve a compilar en un equipo que ejecuta Windows 7 Service Pack 1 o Windows Server 2008 R2 Service Pack 1 o que tiene la actualización 983246 instalado

Solución

Para solucionar este problema, instale la versión de 64 bits de la revisión que coincida con el sistema operativo en el equipo afectado.

Hay un hotfix soportado disponible de Microsoft. Sin embargo, esta revisión se diseñó únicamente para corregir el problema descrito en este artículo. Aplicar esta revisión sólo a los sistemas que experimenten el problema descrito en este artículo. Esta revisión podría ser sometida a comprobaciones adicionales. Por lo tanto, si no se ve muy afectado por este problema, recomendamos que espere a la próxima actualización de software que contenga esta revisión.

Si la revisión está disponible para su descarga, hay una sección de "Descarga de la revisión disponible" en la parte superior de este artículo de Knowledge Base. Si esta sección no aparece, póngase en contacto con servicio al cliente de Microsoft y soporte técnico para obtener la revisión.

Nota Si se producen problemas adicionales o si necesita solucionar un problema, es posible que deba crear una solicitud de servicio independiente. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no guarden relación con esta revisión en cuestión. Para obtener una lista completa de los números de teléfono de soporte técnico de Microsoft o para crear una solicitud de servicio independiente, visite el siguiente sitio Web de Microsoft:
http://support.Microsoft.com/contactus/?ws=support
Nota El formulario de "Descarga de revisión disponible" muestra los idiomas para los que la revisión está disponible. Si no ve su idioma, es porque una revisión no está disponible para ese idioma.

Requisitos previos

No hay ningún requisito previo para aplicar esta revisión.

Información del registro

Para utilizar la revisión de este paquete, no es necesario realizar ningún cambio en el registro.

Requisito de reinicio

Tendrá que reiniciar el equipo después de aplicar esta revisión.

Información de sustitución de la revisión

Este hotfix no sustituye a ninguna revisión publicada previamente.

Información de archivo

Haga clic aquí para ver u ocultar información detallada

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Se refiere a:".

Más información

Esta revisión incluye API depende de la plataforma e independiente de la plataforma API de ADO. La tabla siguiente explican las diferencias entre las distintas versiones de bibliotecas de tipos:
Contraer esta tablaAmpliar esta tabla
Biblioteca de tipos de ADONombre de archivoAPI de ADO compatibles
Microsoft ActiveX Data Objects 2.0 LibraryMsado20.tlbDepende de la plataforma API
Microsoft ActiveX Data Objects 2.1 LibraryMSADO21.Depende de la plataforma API
Biblioteca de Microsoft ActiveX Data Objects 2.5Msado25.tlbDepende de la plataforma API
Biblioteca de Microsoft ActiveX Data Objects 2.6Msado26.tlbDepende de la plataforma API
Microsoft ActiveX Data Objects 2.7 LibraryMsado27.tlbDepende de la plataforma API
Microsoft ActiveX Data Objects 2.8 LibraryMsado28.tlbDepende de la plataforma API
6.0 Biblioteca de Microsoft ActiveX Data ObjectsMsado60.tlb (disponible sólo en Windows Vista o en Windows Server 2008 o en versiones posteriores de Windows)Depende de la plataforma API
6.1 Biblioteca de Microsoft ActiveX Data ObjectsIncrustado en Msado15.dllAPI independiente de la plataforma
Biblioteca de Microsoft ActiveX Data Objects 2.8 del conjunto de registrosMsador28.tlb (disponible en Windows Vista o en Windows Server 2008 o en versiones posteriores de Windows; o incrustados en Msador15.dll en Windows XP o en Windows Server 2003)Depende de la plataforma API (subconjuntos de API en comparación con la biblioteca de Microsoft ActiveX Data Objects 2.8)
Biblioteca de Microsoft ActiveX Data Objects 6.0 de conjunto de registrosincrustado en Msador15.dll (disponible sólo en Windows Vista o en Windows Server 2008 o en versiones posteriores de Windows)Depende de la plataforma API (subconjuntos de API en comparación con la biblioteca de Microsoft ActiveX Data Objects 6.0)
Nota No utilice las versiones antiguas de las bibliotecas de tipos cuando se vuelve a compilar las aplicaciones. Utilice la biblioteca de Microsoft ActiveX Data Objects 6.1 cuando necesite interoperabilidad entre plataformas. En general, utilice Microsoft ActiveX Data Objects 6.0 Library que se incluye con Windows Vista o para Windows Server 2008, para las versiones posteriores de Windows y Microsoft ActiveX Data Objects 2.8 Library que se incluye con Windows XP o Windows Server 2003.

La tabla siguiente muestra las API de ADO que dependen de la plataforma. Además, una API independiente de la plataforma correspondiente se incluye con la biblioteca de tipos 6.1 de ADO.
Contraer esta tablaAmpliar esta tabla
Objeto ADOMétodo o propiedad de ADO
ADOCommmandCreateParameter (tamaño ADO_LONGPTR)
ADORecordsetMaxRecords ([out, retval] ADO_LONGPTR * plMaxRecords)

MaxRecords ([en] lMaxRecords ADO_LONGPTR)

RecordCount ([out, retval] ADO_LONGPTR * pl)

Mover ([in] NumRecords ADO_LONGPTR)

PageCount ([out, retval] ADO_LONGPTR * pl)

AbsolutePage ([out, retval] PositionEnum_Param * pl)

AbsolutePage ([en] PositionEnum_Param l)

Buscar ([en] SkipRecords ADO_LONGPTR)

AbsolutePosition ([en] PositionEnum_Param l)

AbsolutePosition ([out, retval] PositionEnum_Param * pl)
ADOParameterTamaño ([en] ADO_LONGPTR l)

Tamaño ([out, retval] ADO_LONGPTR * pl)
ADOFieldActualSize ([out, retval] ADO_LONGPTR * pl)

DefinedSize (a ADO_LONGPTR * pl)
ADOFieldsAppend ([en] DefinedSize ADO_LONGPTR)
ADOStreamTamaño ([out, retval] ADO_LONGPTR * pSize)

Posición ([out, retval] ADO_LONGPTR * PPO)

CopyTo ([en] CharNumber ADO_LONGPTR)

interoperabilidad de la plataforma de 32 bits o 64 bits

Si se compila una aplicación de VBA que funciona con Office de 64 bits, y si se hace referencia a una de las siguientes bibliotecas de tipos en la aplicación, debe hacer referencia a la biblioteca de tipos independiente de plataforma cambiando la referencia a "Biblioteca Microsoft ActiveX Data Objects 6.1":
  • Microsoft ActiveX Data Objects 2.0 Library
  • Microsoft ActiveX Data Objects 2.1 Library
  • Biblioteca de Microsoft ActiveX Data Objects 2.5
  • Biblioteca de Microsoft ActiveX Data Objects 2.6
  • Microsoft ActiveX Data Objects 2.7 Library
  • Microsoft ActiveX Data Objects 2.8 Library
  • Biblioteca de Microsoft ActiveX Data Objects 2.8 del conjunto de registros
  • Biblioteca de Microsoft ActiveX Data Objects 6.0 de conjunto de registros
Si alguna vez ha cambiado el código de LONG a ADO_LONGPTR para poder aprovechar las interfaces depende de la plataforma en la plataforma de 64 bits, debe convertir en mucho tiempo después de participar en la independiente de la plataforma de interfaces.

Precaución Después de haber tomado las dependencias en la biblioteca de tipos 6.1 ADO, puede ejecutar la aplicación recompilada en los equipos que han instalado esta actualización o en el artículo 2640696 de Microsoft Knowledge Base. No se puede ejecutar la aplicación recompilada en otros equipos. Además, si se expone una interfaz de la aplicación recompilada que puede llamarse desde un equipo remoto y que utiliza una de las interfaces de ADO que se enumeran a continuación (como ADORecordset), asegúrese de que el equipo remoto ha instalado esta actualización o en el artículo KB 2640696.

Actualmente, se recomienda que cambie a la biblioteca de tipo 6.1 ADO sólo cuando se tiene un escenario de varias plataformas, como la interoperabilidad de Office de 32 bits y 64 bits. De lo contrario, no debe utilizar la biblioteca de tipos 6.1 de ADO a menos que usted puede estar seguro de que la aplicación se ejecutará en un equipo que ha instalado esta revisión o la actualización en el artículo 2640696 de Microsoft Knowledge Base. Para obtener más información acerca de 2640696 KB, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2640696 Una aplicación de ADO que se compila en Windows 7 SP1 o en Windows Server 2008 R2 SP1 no se ejecuta en las versiones anteriores de Windows

Compatibilidad con versiones anteriores para aplicaciones recompiladas

Supongamos que desarrolló una aplicación de ADO es compatible con las versiones de Windows anteriores a Windows 7 SP1 y Windows Server 2008 R2 SP1. Después de instalar esta revisión, la aplicación recompilada no funcionen en un equipo que no tiene esta revisión o 2517589 KB instalado. Este comportamiento se produce porque la aplicación puede hacer referencia a una interfaz independiente de la plataforma (haciendo referencia a las bibliotecas de tipo independiente de la plataforma - 6.1 biblioteca de Microsoft ActiveX Data Objects) que se presenta en esta revisión y 2517589 de KB. Para evitar este problema de recompilación, debe hacer referencia a la biblioteca de tipos de dependientes de la plataforma (por ejemplo, Microsoft ActiveX Data Objects 6.0 Library cuando la aplicación se debe ejecutar en Windows Vista o en Windows Server 2008 o en versiones posteriores de Windows) o la biblioteca de Microsoft ActiveX Data Objects 2.8 cuando la aplicación se debe ejecutar en Windows XP o en Windows Server 2003 en el proyecto.

Notas
  • En Windows Vista o Windows Server 2008 o versiones posteriores de Windows, la biblioteca de tipos 6.0 ADO y la biblioteca de tipo 6.1 de ADO comparten la misma biblioteca de tipos (LIBID) de ID. Visual Basic sólo puede mostrar una de ellas en la lista de referencias disponibles a la vez. Para buscar manualmente la biblioteca de tipos 6.0 de ADO (Msado60.tlb) en esta situación, vaya a la ubicación: % programa files%\common comunes\System\ADO. Visual Basic muestra automáticamente la biblioteca de tipos 6.0 de ADO en la lista de referencias disponibles si la referencia a la biblioteca de tipos 6.0 de ADO se agregó al proyecto actual.
  • Si usted es un desarrollador de C++ y si incluye la siguiente línea de código en la aplicación:
    #import msado15.dll
    Debe cambiar la línea a la siguiente cuando se vuelve a compilar la aplicación que se debe ejecutar en Windows Vista o en Windows Server 2008 o en versiones posteriores de Windows:
    #import msado60.tlb
    O bien, debe cambiar la línea a la siguiente cuando se vuelve a compilar la aplicación que se debe ejecutar en Windows XP o en Windows Server 2003:
    #import msado28.tlb
  • Si usted es un desarrollador de C++, VB6 o. NET, y si se ha aplicado "método 1" en la sección "Solución" que se describe en el artículo 2517589 de Microsoft Knowledge Base, no tiene que cambiar el código. Para obtener más información acerca de 2517589 KB, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    2517589 Una aplicación de ADO no se ejecuta en sistemas operativos de bajo nivel se vuelve a compilar en un equipo que ejecuta Windows 7 Service Pack 1 o Windows Server 2008 R2 Service Pack 1 o que tenga instalado KB983246
Para obtener más información acerca de las API de ADO, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
Referencia de la API de ADO
Para obtener más información acerca de la propiedad RecordCount de ADOs, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
Introducción a la propiedad RecordCount
Para obtener más información sobre el historial de ADO, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
Historial de ADO
Para obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 Descripción de la terminología estándar que se utiliza para describir las actualizaciones de software de Microsoft

Información adicional de archivos

Haga clic aquí para ver u ocultar información detallada

Propiedades

Id. de artículo: 983246 - Última revisión: jueves, 31 de octubre de 2013 - Versión: 5.0
La información de este artículo se refiere a:
  • Service Pack 1 para Windows Vista sobre las siguientes plataformas
    • Windows Vista Business
    • Windows Vista Business 64-bit edition
    • Windows Vista Enterprise
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business
    • Windows Vista Business 64-bit edition
    • Windows Vista Enterprise
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate
    • Windows Vista Ultimate 64-bit edition
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Datacenter without Hyper-V
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Enterprise without Hyper-V
  • Windows Server 2008 Standard
  • Windows Server 2008 Standard without Hyper-V
  • Windows Web Server 2008
  • Windows Server 2008 for Itanium-Based Systems
  • Service Pack 3 para Microsoft Windows XP
  • Microsoft Windows Server 2003 Service Pack 2
Palabras clave: 
kbexpertiseinter kbhotfixserver kbqfe kbfix kbautohotfix kbsurveynew kbprb kbmt KB983246 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 983246

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com