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:
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:
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:
Tras el Ok se habrá generado el Mapa XML que podemos visualizar desde la Ficha Programador/Desarrollador > grupo XML > botón Origen:
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:
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:
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:
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:
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:
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:
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:
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:
Tras el Ok se habrá generado el Mapa XML que podemos visualizar desde la Ficha Programador/Desarrollador > grupo XML > botón Origen:
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:
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:
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:
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:
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:
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.
ResponderEliminarCrees que podrias ayudarme a solucionar este problemilla?? Muchas gracias!! :)
Hola Luis,
Eliminarlas 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
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.
ResponderEliminarHola,
Eliminarexisten 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
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.
ResponderEliminarSaben como hacer para que baje el campo llamado UUID
Gracias
Hola Oscar,
Eliminarno 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
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.
ResponderEliminarHola,
Eliminarno 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
He intentado exportar a xml y me sale el error:
ResponderEliminarNo se ha definido el tipo definido por el usuario.
Se me para en una línea que pone:
Dim XmlDoc As msxml2.DOMDocument50
Tengo excel 2010 con windows
ResponderEliminarHola David,
Eliminarparece 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
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.)
ResponderEliminarHola Francisco,
Eliminarqué 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
Hola, he estado buscando alguna manera de crear una macro que importe solo un dato de cada XML, esto es posible con VBA?
ResponderEliminarSaludos!
Hola Javier,
Eliminarentiendo necesitas recuperar un solo registro +campo de ese XML...
No creo posible (salvo mejor opinión) tal cosa, precisamente el XML se creó para importación/exportación masiva..
Lo que sí podrías hacer es limpiar de datos No necesarios con o sin macros una vez importado en la hoja de cálculo.
O bien optar por otras herramientas (quizá Power Query)
Saludos
Buenos dias, podrias decirme si hay alguna forma de mapear mediante codigo, lo que quiero hacer es, tener un codigo que me mapee los datos de un archivo xml, porque me cambian el nombre de los datos y el mapeo que tenia ya no me sirve y tengo que mapear todo de nuevo, entonces lo que quiero es tener mapeado por codigo asi cambio solamente los datos que modificaron y listo, pero no se como hacerlo
ResponderEliminarLo siento, no entendí qué necesitas
EliminarHola Ismael, gracias por tu tiempo. Explico un poco mas. Estan implementando un nuevo sistema y los datos vienen en un archivo xml, el tema es que van modificando el archivo y al hacerlo el mapeo que tenia inicialmente ya no me sirve, yo lo que hice fue mapear dato por dato en las celdas que necesito la info, porque tampoco necesito todos lo datos que vienen en el archivo, que igual son muchos. Entonces lo que queria saber es si por medio de codigo puedo hacer el mapa, o sea lo que yo hago manualmente a traves de Source donde creo el mapa y asigno despues a cada dato del xml una celda en excel, queria hacerlo a traves de codigo para que sea mas falcil el mapeo cuando me modifican el archivo xml... espero que se entienda la idea. Saludos
EliminarHola,
Eliminares bastante complejo el tema, pero te dejo un link de Microsoft que te puede orientar:
https://msdn.microsoft.com/en-us/library/office/gg469859(v=office.14).aspx
Saludos
Ok Ismael muchas gracias!
EliminarBuenas noches, duda, como exportó una Tabla de base de datos a una carpeta o para que quede en una tabla guardada
ResponderEliminarEn XML
ResponderEliminarHola!
Eliminarsolo sigue las indicaciones del post... así exportarás la tabla en XML
saludos
Hola Ismael
ResponderEliminarYo tengo una serie de formulas que extraen esos datos de un xml pero yo quisiera que mi macro leyera el XML como texto y lo pegara en una sola celda. Hoy lo hago con el metodo de abrir con notepad/selecc todo/ctrl-c y luego en la celda de excel teclear "F2" y despues ctrl-v y listo. Es posible? Gracias
Hola,
Eliminar... pero si haces esto estarás perdiendo las características del XML, no?
Creo que lo que planteas no tiene nada que ver con XML, si solo quieres recuperar los datos de una tabla como texto puedes hacerlo accediendo directamente a esa tabla... y tendrás menos problemas
Slds
Ok. no tiene nada que ver con XML. Lo que necesito es leer la informacion de ese archivo xml como texto para poder extraer datos, pero eso lo tengo que hacer cada semana para 100 o 200 xml. por eso quiero hacerlo con una macro. Mira solo necesito que me digas como abrir el archivo de datos (xml) para lectura la macro ya la tengo hecha.
EliminarPor cierto, seria posible almacenar esos caracteres del XML en una variable en lugar de una celda para poder usarla con las formulas de excel como extrae()?
ResponderEliminarGracias.
Sí, claro...
Eliminarsería posible, no habría ninguna diferencia
Slds