martes, 2 de septiembre de 2014

Importando - Exportando datos en XML con Excel.

Aprenderemos cómo construir nuestro fichero XML con datos volcados en nuestra hoja de cálculo Excel.
Comenzar diciendo que XML es un Lenguaje estandarizado de Exportación e Importación de información, esto es el intercambio de datos; y su significado concreto viene del inglés: eXtensible Markup Language.
El fin principal de este lenguaje es almacenar datos en forma legible.


En el ejemplo que desarrollaré partiremos de una información contenida en una hoja de cálculo:

Importando - Exportando datos en XML con Excel.


El objetivo del día es generar en un fichero XML la información de nuestro origen, para a continuación realizar en otro Libro de Excel o base de datos de Access la importación de dichos datos...

Existen multitud de códigos VBA para Excel para generar nuestro fichero XML, y mucha información en la Web. Pero yo os propongo un método algo más sencillo: Descargarnos un complemento de Microsoft, que podemos encontrar en
http://www.microsoft.com/en-us/download/details.aspx?id=3108
Es un complemento gratuito y con la garantía Microsoft... y a pesar de estar definido para la versión 2003, sigue siendo 100% operativo en versiones superiores.


Tras instalar este complemento tendremos su propia Ficha:

Importando - Exportando datos en XML con Excel.



Con la instalación anterior, estamos en disposición de comenzar y finalizar en pocos pasos el proceso de Exportación-Importación XML.
Primer paso: Generamos el mapa XML con el complemento.
Para ello, presionamos Convert a Range in a XML List... desde el desplegable del complemento.
Esto abrirá la ventana para seleccionar dónde se encuentra el rango de datos:

Importando - Exportando datos en XML con Excel.


Tras el Ok se habrá generado el Mapa XML que podemos visualizar desde la Ficha Programador/Desarrollador > grupo XML > botón Origen:

Importando - Exportando datos en XML con Excel.



Vamos con el Segundo paso: Exportar la estructura y datos. Para esto bastará hacer clic en Ficha Programador/Desarrollador > grupo XML > botón Exportar, lo que nos abrirá una ventana del explorador para guardar donde queramos el fichero con los datos en formato XML:

Importando - Exportando datos en XML con Excel.



Si tienes curiosidad por ver qué has creado, buscar el archivo recién creado y ábrelo, por ejemplo con el Bloc de notas de Windows, esto es lo que verás:

Importando - Exportando datos en XML con Excel.



Tercer paso: Importaremos nuestros datos en XML a un segundo libro de Excel.
Para ello, tras cerrar el libro original, y abrir una nuevo, volveremos a la Ficha Programador/Desarrollador > grupo XML > botón Importar:

Importando - Exportando datos en XML con Excel.


Se abrirá una ventana del explorador, donde buscaremos el fichero .XML creado ('Excelforo_XML.xml'), tras aceptar... se nos pedirá en una última ventana dónde queremos los datos:

Importando - Exportando datos en XML con Excel.


y listo.. ya tenemos nuestros datos importados en un nuevo libro de Excel.

Igualmente funcionaría la importación en un Access, desde la ficha Datos Externos > grupo Importar y vincular > botón Importar XML:

Importando - Exportando datos en XML con Excel.


13 comentarios:

  1. Bueno dias! me gustaria compartir una duda que me ha surgido y no se como solucionar. Yo tengo mis datos importados en excel. Y como son dimensiones de un dibujo, clasificadas por elementos, siempre tengo cada elemento en un libro nuevo (por ejemplo, en un libro la dimension de los muros de la casa, en otro la dimension de las ventanas...). Yo siempre hacia una importacion y luego copiaba el libro para no repetir el proceso de importar datos desde el principio todo el rato. Pero no se que he hecho ahora que me da error. quiero decir, puedo copiar los libros y modificar los elementos que hay dentro, pero una vez que guardo y vuelvo a abrir el programa, me sale un mensaje de que hay cierta informacion que no puede ser leida/encontrada. Y resulta que los libros de datos extraidos que he copiado y pegado, han dejado de ser una extraccion para convertirse en texto normal sin ninguna referencia.
    Crees que podrias ayudarme a solucionar este problemilla?? Muchas gracias!! :)

    ResponderEliminar
    Respuestas
    1. Hola Luis,
      las conexiones de datos (construidas a partir de la importación de datos), se configuran hacia una cadena de conexión concreta y una query/consulta que extrae datos de una tabla o view del origen de datos...
      Si realizas ese duplicado del Libro, tendrás que modificar la cadena y/o query si quieres 'apuntar' a otra tabla o vista del origen.
      Lo puedes hacer desde las propiedades de la Conexión...
      Saludos

      Eliminar
  2. Hola! alguien puede decirme como solucionar un problema persistente en la exportación de datos excel a xml? Me sale este mensaje "Asignaciones XML no exportables". Gracias.

    ResponderEliminar
    Respuestas
    1. Hola,
      existen ciertos tipos de datos que no son admitidos por el código que emplea XML...
      Te recomiendo la lectura de este link de Microsoft
      https://support.office.com/es-es/article/Informaci%C3%B3n-general-sobre-XML-en-Excel-f11faa7e-63ae-4166-b3ac-c9e9752a7d80?ui=es-ES&rs=es-ES&ad=ES
      podrás analizar información relevante sobre el XML y sus asignaciones, requisitos, etc.
      Saludos

      Eliminar
  3. Hola, buenas tardes importe un archivo XML utilizando el complemento de Excel; el archivo corresponde a un CFDI (factura electrónica) y al realizar la importación, pasan casi todos los campos excepto el llamado UUID el cual corresponde al folio fiscal del comprobante, en su lugar pasa uno llamado folio fiscal original; sin embargo no contiene información.
    Saben como hacer para que baje el campo llamado UUID
    Gracias

    ResponderEliminar
    Respuestas
    1. Hola Oscar,
      no sabría decirte, puede ser un problema de incompatibilidad en las etiquetas del fichero .xml o simplemente que Excel no admite todos los tipos de valores... pero es muy raro que sustituya un campo por otro.
      En todo caso debería importar el campo UUID sin valores o valores de error.. no cambiarlo por otro?
      Siento no poder ayudarte.
      Un saludo y suerte

      Eliminar
  4. Hola amigos. Tengo un problemita con un archivo excel que me general el XML. Recien cambie a Windows 10 y despues del cambio el archivo presento el error. El caso es que en el archivo excel tiene un campo de tipo fecha con formato DD/MM/YYYY, pero al generar el XML el campo fecha sale con un solo digito en el dia y en el mes, es decir si la fecha es 05/05/2016, el XML sale 5/5/2016. Como puedo solucionar esto. ?? Gracias de antemano.

    ResponderEliminar
    Respuestas
    1. Hola,
      no creo el fallo lo genere que el formato sea con uno o dos dígitos, es más probable esté fallando el reconocimiento completo de la fecha...
      Fíjate en el ejemplo de post, y verás que para evitar errores de fecha es mejor operar como si fueran números...
      Saludos

      Eliminar
  5. He intentado exportar a xml y me sale el error:
    No se ha definido el tipo definido por el usuario.

    Se me para en una línea que pone:
    Dim XmlDoc As msxml2.DOMDocument50

    ResponderEliminar
  6. Respuestas
    1. Hola David,
      parece pueda ser un problema puntual de la versión.
      Prueba las alternativas indicadas en
      http://answers.microsoft.com/en-us/office/forum/office_2010-customize/cannot-create-xml-table-in-excel-2010-with-2003/bc89e78b-00e9-44ff-b7fe-d91378a4af58?auth=1
      Un saludo

      Eliminar
  7. En una celda de Excel, tengo una factura digital XML, ¿como puedo en otra celda extraer los datos específicos que están en el XML, (Total, IVA, etc.)

    ResponderEliminar
    Respuestas
    1. Hola Francisco,
      qué tal estás?, un placer saludarte igualmente.

      Tendrías que importar ese listado de datos a Excel y desde ahí, mediante vínculos o fórmulas recuperar los datos de los campos que necesites.

      Saludos

      Eliminar