Makro zum Erstellen einer korrekten XML
#1
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.

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 :)
Top
#2
Hallöchen,

Nimm mal zur Ermittlung der letzten Zelle die CurrentRegion.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Zitat:Im Moment versuche ich, ein Makro zu schreiben, das mir helfen soll, eine XML-Datei zu erstellen. 


Du meinst du versuchst ein Makro, das dir Jemand geschrieben hat, von jemand Anderem anpassen zu lassen?

Hast du diese Frage auch in mehreren Foren gepostet, wie die davor?
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste