Esta es la hoja de excel que convertiremos a XML.
Sub ConvetirAXml() Dim fila As Integer Dim documento As DOMDocument Dim registros As IXMLDOMElement Dim registro As IXMLDOMElement Dim atributo As IXMLDOMAttribute Dim columna As IXMLDOMElement Dim encoding As IXMLDOMProcessingInstruction fila = 2 Set documento = New DOMDocument Set encoding = documento.createProcessingInstruction("xml", "version='1.0' encoding='iso-8859-1'") documento.appendChild encoding Set registros = documento.createElement("registros") documento.appendChild registros Do While datos.Cells(fila, "B") <> "" Set registro = documento.createElement("registro") registros.appendChild registro 'COLUMNA ID Set columna = documento.createElement(datos.Cells(1, "A")) registro.appendChild columna columna.Text = datos.Cells(fila, "A") Set atributo = documento.createAttribute("id") atributo.NodeValue = fila registro.setAttributeNode atributo 'COLUMNA DATO Set columna = documento.createElement(datos.Cells(1, "B")) registro.appendChild columna columna.Text = datos.Cells(fila, "B") Set atributo = documento.createAttribute("id") atributo.NodeValue = fila registro.setAttributeNode atributo fila = fila + 1 Loop documento.Save ThisWorkbook.Path & "\datos.xml" End Sub
Archivo XML Generado:
<?xml version="1.0" encoding="iso-8859-1"?> <registros> <registro id="2"> <ID>1</ID> <DATO>A</DATO> </registro> <registro id="3"> <ID>2</ID> <DATO>B</DATO> </registro> <registro id="4"> <ID>3</ID> <DATO>C</DATO> </registro> <registro id="5"> <ID>4</ID> <DATO>D</DATO> </registro> <registro id="6"> <ID>5</ID> <DATO>E</DATO> </registro> </registros>
Descargar ejemplo
Descarga el archivo de excel posicionate sobre la hoja que se llama DATOS y presiona F9, en la misma ubicación donde descargaste o colocaste el archivo, si tienes algun problema para ejecutarlo puede deberse a que tendras que habilitar el uso de macros y activeX en excel. Como buena práctica les recomiendo ir guardando y organizando los códigos que vamos haciendo en nuestro día a día, les sugiero un muy buen code snippets manager que se llama SnipItPro.
No hay comentarios:
Publicar un comentario