08.08.2020, 12:34
Im Moment versuche ich, ein Makro zu schreiben, das mir helfen soll, eine XML-Datei zu erstellen. Das Makro liest Zelle für Zelle und setzt die Daten in einige Tags, die in einer Datei zusammenkommen.
Mein Code scheint nicht richtig zu funktionieren.
Ich habe eine Tabelle mit 6 Zeilen und insgesamt 174 Spalten.
Aber nicht jede Spalte hat 6 Zeilen.
Viele von ihnen haben insgesamt nur 2 Zeilen.
Die allererste Zeile in meiner Tabelle ist die Definition für die öffnenden und schließenden Tags.
Zum Beispiel:abc .
Mein Problem im Moment ist, dass nicht alle Daten gesammelt und in eine XML-Datei gestellt werden. Mein Code liest zunächst, dass es insgesamt nur 2 Zeilen gibt, weil meine Excel-Daten am Anfang mit 2 Zeilen beginnen (nach den 2 Zeilen gibt es mehr Zeilen, z.B. 6). Die Schleife durchläuft also alle Daten in Excel und sammelt nur in jeder Spalte 2 Zeilen.
Wie kann ich die Schleife dynamischer gestalten? Ich möchte, dass mein Code ein XML abhängig von der Spalte und den Zeilen erstellt? Wenn es also 6 Zeilen gibt, dann sollte es 6 Zeilen in meiner XML-Datei erzeugen.
Vielen Dank und Viele liebe Grüße an euch :)
Mein Code scheint nicht richtig zu funktionieren.
Ich habe eine Tabelle mit 6 Zeilen und insgesamt 174 Spalten.
Aber nicht jede Spalte hat 6 Zeilen.
Viele von ihnen haben insgesamt nur 2 Zeilen.
Die allererste Zeile in meiner Tabelle ist die Definition für die öffnenden und schließenden Tags.
Zum Beispiel:
Mein Problem im Moment ist, dass nicht alle Daten gesammelt und in eine XML-Datei gestellt werden. Mein Code liest zunächst, dass es insgesamt nur 2 Zeilen gibt, weil meine Excel-Daten am Anfang mit 2 Zeilen beginnen (nach den 2 Zeilen gibt es mehr Zeilen, z.B. 6). Die Schleife durchläuft also alle Daten in Excel und sammelt nur in jeder Spalte 2 Zeilen.
Wie kann ich die Schleife dynamischer gestalten? Ich möchte, dass mein Code ein XML abhängig von der Spalte und den Zeilen erstellt? Wenn es also 6 Zeilen gibt, dann sollte es 6 Zeilen in meiner XML-Datei erzeugen.
Code:
Option Explicit
Sub XMLTextdatei3()
Dim sht As Worksheet
Dim loLetzteZ As Long, loLetzteS As Long, i As Long
Dim rBereich As Range, rng As Range
Dim sTagO As String, sTagC As String, sTagOEnd As String, sTagCStart As String
Dim sZeile As String
Dim strPfad As String
Dim strText As String
sTagO = "<"
sTagOEnd = "/>"
sTagC = ">"
sTagCStart = "</"
Set sht = Worksheets("Classification_3")
loLetzteZ = sht.Cells(Rows.Count, 1).End(xlUp).Row
loLetzteS = sht.Cells(1, Columns.Count).End(xlToLeft).Column
Set rBereich = sht.Range("A2:" & Cells(loLetzteZ, loLetzteS).Address)
Application.ScreenUpdating = False
sZeile = ""
strPfad = ActiveWorkbook.Path & "\Classification_3" & ".xml"
'zeile für zeile
For Each rng In rBereich.Rows
With rng
'spalte für spalte
For i = 1 To .Columns.Count
If i = 1 Then
sZeile = sZeile & sTagO & Cells(1, i) & "=""" & .Cells(1, i) & """" & sTagC
Else
If IsEmpty(.Cells(1, i)) Then
sZeile = sZeile & sTagO & Cells(1, i) & sTagOEnd
Else
sZeile = sZeile & sTagO & Cells(1, i) & sTagC
sZeile = sZeile & .Cells(1, i)
sZeile = sZeile & sTagCStart & Cells(1, i) & sTagC
End If
End If
sZeile = sZeile & vbCrLf
Next
'sZeile = sZeile & "</" & " " & ">"
sZeile = sZeile & vbCrLf & vbCrLf
Call InDateiSchreiben(strPfad, sZeile, True)
sZeile = ""
End With
Next
Application.ScreenUpdating = True
End Sub
Vielen Dank und Viele liebe Grüße an euch :)