Crear archivo xml a partir de matriz datos excel

Tengo una matriz de datos en excel y a partir de esa matriz debo crear un archivo xml quisiera tener una plantilla en la que se puedan ingresar los datos y al presionar un botón se genere el xml

Ejemplo del xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<mas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/2276.xsd">
<Cab>
<Ano>2020</Ano>
<CodCpt>1</CodCpt>
<Formato>2276</Formato>
<Version>2</Version>
<NumEnvio>10</NumEnvio>
<FecEnvio>2020-08-20T17:55:47</FecEnvio>
<FecInicial>2019-01-01</FecInicial>
<FecFinal>2019-12-31</FecFinal>
<ValorTotal>13</ValorTotal>
<CantReg>1</CantReg>
</Cab>
<rentra tdocb="13" nitb="1061764434" pap="ANDRADE" sap="ANAYA" pno="VALENTINA" dir="CL 52N 11 150" dpto="19" mun="001" pais="169" pasa="7401184" paec="0" paho="0" pase="0" paco="0" papre="892776" pavia="0" paga="0" patra="0" potro="0" pabo="0" cein="0" peju="0" apos="265000" apof="265000" apov="0" apafc="0" vare="0"/>
</mas>

1 respuesta

Respuesta
1

Entiendo que es una tabla con columnas, que son los campos de la sección Cab y filas, que serían los diferentes registros. ¿Sería extraer un XML por cada fila/registro como el del ejemplo o un XML que incluya uno tras otro todos los registros? ¿Los campos de la etiqueta rentra también están en otras columnas de la misma fila?

Gracias cada columna tiene los datos que se ven reflejados en la descripción del archivo

Tdoc      nitb                   pap 

13 10617 64434 andrade

Si el aspecto de la hoja es algo como esto:

El código del botón podría ser como este:

Sub GenerarXML()
    Dim f As Integer
    Dim sFileName As String
    f = 2
    sFileName = ThisWorkbook.Path & "\" & Format(Date + Time, "YYYY-MM-dd_HH-mm-ss") & "_archivo.xml"
    Open sFileName For Output As #1
    Print #1, "<?xml version=""1.0"" encoding=""ISO-8859-1""?>"
    Print #1, "<mas xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:noNamespaceSchemaLocation=""../xsd/2276.xsd"">"
    Print #1, "<Cab>"
    Print #1, "<Ano>" & Cells(f, 1).Value & "</Ano>"
    Print #1, "<CodCpt>" & Cells(f, 2).Value & "</CodCpt>"
    Print #1, "<Formato>" & Cells(f, 3).Value & "</Formato>"
    Print #1, "<Version>" & Cells(f, 4).Value & "</Version>"
    Print #1, "</Cab>"
    Print #1, "<rentra tdocb=""" & Cells(f, 5).Value & """ nitb=""" & Cells(f, 6).Value & """/>"
    Print #1, "</mas>"
    Close #1
    MsgBox "Archivo guardado:" & vbCrLf & sFileName
End Sub

No me ha quedado claro si hay que generar un XML por cada fila o un único XML con todas las filas.

¡Gracias! Es un solo archivo xml con el contenido de la información de todas las celdas voy a utilizar tu código y haré las respectivas pruebas muchas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas