jueves, 21 de octubre de 2010

Cómo importar más de 1000 caracteres de una Excel con Dynamics Nav

La forma que tiene Dynamics Nav de importar datos de una excel es a través de una tabla llamada Excel Buffer y de la librería Microsoft Excel 12.0 Object Library.
Va cargando en cada entrada de la tabla el valor de cada celda de la hoja de Excel y una serie de propiedades (tipo de letra, fórmula, etc..). El problema que me ha surgido es que la librería tiene un string buffer de 1000 caracteres, si una celda de la hoja tiene más de 1000 caracteres al usar el método Value para obtener el contenido de la celda y grabarlo en la tabla Excel Buffer da error de desbordamiento en el buffer de la librería. Obviamente el tamaño del buffer no se puede modificar en la dll.
Para solucionarlo he hecho lo siguiente:


XlWrkSht.Range('IV3').Formula := '=EXTRAE('+xlColID + xlRowID+';1;1000)';
XlWrkSht.Range('IV4').Formula := '=EXTRAE('+xlColID + xlRowID+';1001;1000)';
XlWrkSht.Range('IV5').Formula := '=EXTRAE('+xlColID + xlRowID+';2001;1000)';

locTextLargo1 := FORMAT(XlWrkSht.Range('IV3').Value);
locTextLargo2 := FORMAT(XlWrkSht.Range('IV4').Value);
locTextLargo3 := FORMAT(XlWrkSht.Range('IV5').Value);

Lo que hago es usar la fórmula de Excel EXTRAER para grabar bloques de mil en mil caracteres, de la celda que estoy importando (xlColID + xlRowID), en otras celdas, en este caso he usado las celdas IV3 IV4 IV5 que al ser las últimas columnas asumo estarán vacías. Después ya podemos obtener los valores de esas tres celdas por separado.

No hay comentarios:

Publicar un comentario