Stefan Bauer: VBA Excel zu XML

Hallo liebe Forumsgemeinde.

ich möchte gern mittels Makro ein Excelfile zu XML exportieren.

Ich habe ein Excel mit drei Spalten:

ID || Name || Level

Insgesamt habe ich drei Level, die eigentlich folgendermaßen geschachtelt werden sollen:

Level1
 Level2
  Level3

Level1
  Level2
   Level3

Und irgendwie steh ich total auf dem Schlauch.

Hierm mal mein bisheriges Experiment:

Sub TextDateiErzeugen()
Dim FS As Object, MeinFile As Object
Dim Zelle As Range, Bereich As Range

Set FS = CreateObject("Scripting.FileSystemObject")
Set MeinFile = FS.CreateTextFile(Application.GetSaveAsFilename("werteliste.xml", "XML Datei (*.xml), *.xml", , "XML Datei speichern"), True)
MeinFile.WriteLine ("<xml><werteliste_data>")

With ThisWorkbook.Worksheets("Tabelle1")
    Set Bereich = .Range("a2:c" & .Range("c65536").End(xlUp).Row)
End With

Dim regionVal
Dim companyVal
Dim spalte1
Dim spalte2
Dim spalte3
Dim Zelle1 As Range
Dim Zelle2 As Range
For Each Zelle In Bereich
    If Zelle.Offset(0, 2).Text = 1 Then
        spalte = "Region"
    End If
    If Zelle.Offset(0, 2).Text = 2 Then
        spalte = "Company"
    End If
    If Zelle.Offset(0, 2).Text = 3 Then
        spalte = "Site"
    End If

MeinFile.WriteLine ("   <" & spalte & ">")
    MeinFile.WriteLine ("       <name>" & Zelle.Offset(0, 1).Text & "</name>")
    MeinFile.WriteLine ("       <" & spalte & ">")
    MeinFile.WriteLine ("           <name>" & Zelle.Offset(0, 1).Text & "</name>")
    MeinFile.WriteLine ("           <" & spalte & ">")
    MeinFile.WriteLine ("               <name>" & Zelle.Offset(0, 1).Text & "</name>")
    MeinFile.WriteLine ("           </" & spalte & ">")
    MeinFile.WriteLine ("       </" & spalte & ">")
    MeinFile.WriteLine ("   </" & spalte & ">")

er gibt mir zwar schön was aus, aber leider nicht in der Reihenfolge, wie ich das gern hätte.

Hat jemand einen Denkanstoß für mich?

Danke

Stefan

  1. Hallo,

    Ich habe ein Excel mit drei Spalten:

    ID || Name || Level

    Beispieldaten?

    For Each Zelle In Bereich

    wo ist denn End For?

    If Zelle.Offset(0, 2).Text = 1 Then
            spalte = "Region"
        End If
        If Zelle.Offset(0, 2).Text = 2 Then
            spalte = "Company"
        End If
        If Zelle.Offset(0, 2).Text = 3 Then
            spalte = "Site"
        End If

    MeinFile.WriteLine ("   <" & spalte & ">")

    Diese Ausgaben sollten dann doch auch in der For-Schleife und in den If-Bereichen abgehandelt werden, oder?

    Hat jemand einen Denkanstoß für mich?

    hth
    Gruß
    Kalk