Hoy he perdido un buen rato con este problema, así que comparto la solución aquí por si a alguien más le pasa.

Tengo una aplicación vieja de escritorio que importa unos archivos XML dentro de una base de datos Access. Recientemente he instalado la versión definitiva de Office 2013 y he aprovechado para instalar la versión de 64bits de la suite, ya que antes tenía Office 2010 x32. Desde el momento en que he instalado esta nueva versión me dejó de funcionar la aplicación de importar archivos. Todo el tiempo daba el siguiente error:

ACEOLEDB12

Al tener instalado Access 2013 eso no debería pasar. El caso es que desde Visual Studio también ocurría al intentar acceder desde el explorador de servidores si intentabas añadir una conexión a cualquier Access.

Lo cierto es que el formato de Access no ha cambiado desde la versión 2007 por lo que cualquier versión del driver por antigua que sea debería funcionar, y con más razón si tienes instalada la última versión del entorno.

Todo apuntaba a que era un problema por haber instalado la versión de 64 bits, y de hecho así era.

El driver para manejar archivos de Office desde OLEDB no ha cambiado desde la versión 7, aunque sacaron una versión actualizada con Office 2016 (que es la última que hay) que se puede descargar desde aquí. Esta versión soporta también sistemas de 64 bits, algo que no ocurría con Office 2007.

En teoría, teniendo instalado Office 2013 no debería necesitar instalar estos drivers, pero por si acaso me descargué la versión x64 del mismo y volví a ejecutar la aplicación. Resultado: el mismo error :-(

Entonces se me ocurrió lo que podía estar pasando: aunque mi sistema es de 64 bits y el driver de 64 bits estaba instalado seguro ¿qué pasa con la aplicación?

Efectivamente, ésta estaba compilada para funcionar como aplicación de 32 bits, por lo que entonces al ejecutarla se usaba la capa de emulación de Windows 32 (WoW64, o Windows On Windows64). Al hacerlo los drivers de 64 bits no estaban disponibles y los de 32 bits se habían desinstalado y no es posible instalarlos en un sistema de 64 bits...

La solución final al problema: recompilar la aplicación asegurándonos de que se hace para 64 bits:

ACEOLEDB12_x64

Ahora al lanzar la aplicación ésta se ejecuta normalmente, sin la capa de emulación, por lo que es capaz de acceder a los drivers de 64 bits y por lo tanto funciona perfectamente :-)

¡Espero que a alguien más le resulte útil!

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA