Så har jeg kigget lidt på det.
Har lagt et tyndt eksempel her:
http://www.tbdl.dk/excel/xmlver2.xlsHer er koden. Håber den er lidt selvforklarende :-)
Sub XMLNiveauTest()
Dim oXMLDOM As Object 'As DOMDocument40
Dim oProcessInfo As Object 'As IXMLDOMProcessingInstruction
Dim oNiveau1 As Object
Dim oNiveau2 As Object
Dim oNiveau3 As Object
Dim rngXML As Range
Dim rngCell As Range
Set rngXML = Sheets("Ark3").Range("A2:A50")
Set oXMLDOM = CreateObject("Microsoft.XMLDOM")
Set oProcessInfo = oXMLDOM.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
'opret hovedelementerne
Set oXMLDOM.documentElement = oXMLDOM.createElement("Root") 'niveau1
Set oNiveau2 = oXMLDOM.createElement("Product") 'niveau 2
Set oNiveau3 = oXMLDOM.createElement("Type") 'niveau 3
'Processing instructions
oXMLDOM.insertBefore oProcessInfo, oXMLDOM.childNodes.Item(0)
'opret underelementerne
oNiveau2.appendChild oXMLDOM.createElement("Navn")
oNiveau3.appendChild oXMLDOM.createElement("ID")
oNiveau3.appendChild oXMLDOM.createElement("Orig")
'kør igennem alle celler i rngXML
For Each rngCell In rngXML
'indsæt i elementet navn fra kolonne A
oNiveau2.childNodes(0).Text = rngCell.Offset(, 0).Text
'indsæt i elementet Type underelementerne ID og Orig fra kolonne B og C
oNiveau3.childNodes(0).Text = rngCell.Offset(, 1).Text
oNiveau3.childNodes(1).Text = rngCell.Offset(, 2).Text
'sammenkobling af niveau 2 og 3
'her "appendes" hele niveau3 til niveau2
oNiveau2.appendChild oNiveau3
'Klargør hele noden
oXMLDOM.documentElement.appendChild oNiveau2.CloneNode(True)
Next
'lav fil
oXMLDOM.Save (ThisWorkbook.Path & "\myXMLfile2.xml")
'ryd op
Set oProcessInfo = Nothing
Set oXMLDOM = Nothing
Set oNiveau1 = Nothing
Set oNiveau2 = Nothing
Set oNiveau3 = Nothing
MsgBox "Færdig, filen ligger her : " & vbCrLf & ThisWorkbook.Path & "\myXMLfile2.xml", vbInformation
End Sub