Acerca de:

Este blog contiene los códigos, ejemplos y bases de datos que he usado cuando aprendía acerca de algún tema específico. En lugar de borrarlos (una vez dominado ya el tema), he decidido publicarlos :)

jueves, 11 de octubre de 2012

VB6: Error al conectar un recordset a un archivo xls modificado con Open Office Calc

Me encontré con este error mientras experimentaba un poco con Open Office: en Visual Basic 6 conectaba un recordset a una hoja en un archivo xls, luego listaba las celdas de la primera fila en un control List (el recordset considera el archivo xls como una base de datos, sus hojas como tablas, y las celdas de la primera fila como los campos si la propiedad de la cadena de conexión HDR es "Yes".).
Todo salía bien mientras el archivo xls fuera modificado con MS Excel, pero si lo modificaba con Open Office Calc, la aplicación me tiraba un error de "La tabla externa no tiene el formato esperado".

El proyecto, junto a los archivos xls de prueba, pueden descargarse de aquí.

Mi teoría es que Open Office realiza algún cambio a las hojas de los archivos xls que no realiza MS Excel. Los archivos resultantes pueden abrirse tanto con MS Excel y Calc, y parecer idénticos, pero el cambio introducido al guardar con Calc hace que un recordset de VB6 ya no pueda reconocer las hojas como tablas válidas.

Por ejemplo, tengo este archivo creado con MS Excel:

 
Al guardarlo con Open Office Calc queda como:


¿Eliminará Open Office información que no usan ni MS Excel ni Calc, pero sí un recordset?
Dado el cambio en el tamaño del archivo, es probable.