Clever-Excel-Forum

Normale Version: Spalten ohne xml-Code nicht ausfüllen (war:[Excel])
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

ich lese eine xml Datei in Excel ein nun möchte ich nur einzelne Spalten in ein neues Tabellenblatt kopieren.
Dies funktioniert soweit mit folgendem Makro:

Code:
Public Sub Kopieren()

Dim WkSh_Q As Worksheet
Dim WkSh_Z As Worksheet
Dim rZelle As Range
Dim aUeberschr As Variant
Dim iIndx As Integer
Dim iSpalte As Integer

aUeberschr = Array("/trk/trkseg/trkpt/@lat", "/trk/trkseg/trkpt/@lon", "/trk/trkseg/trkpt/ele", "/trk/trkseg/trkpt/time", "/trk/trkseg/trkpt/cmt")

Application.ScreenUpdating = False

Set WkSh_Q = Worksheets("GPX_XML") ' das Quell-Tabellenblatt
Set WkSh_Z = Worksheets("GPX") ' das Ziel-Tabellenblatt

With WkSh_Q.Rows(1)
For iIndx = 0 To UBound(aUeberschr)
Set rZelle = .Find(aUeberschr(iIndx), LookAt:=xlWhole, LookIn:=xlValues)
If Not rZelle Is Nothing Then
iSpalte = iSpalte + 1
WkSh_Q.Columns(rZelle.Column).Copy Destination:=WkSh_Z.Columns(iSpalte)
End If
Next iIndx
End With

Application.ScreenUpdating = True

End Sub

Nun kann es vorkommen, dass eine Spalte in der xml nicht vorhanden ist.
Diese Spalte soll in dem neuen Tabellenblatt leer bleiben.
Bisher werden die Spalten fortlaufend ausgefüllt.

Was muss ich im Code hinzufügen damit die die leere Spalte übersprungen wird.

Ich hoffe ich konnte es einigermaßen erklären.

Viele Grüße

Thomas
Hallöchen,

DU setzt die Spaltennummer nur hoch, wenn was gefunden wurde. Nimm die entsprechende Zeile vor die Prüfung.

Statt

If Not rZelle Is Nothing Then
iSpalte = iSpalte + 1

dann

iSpalte = iSpalte + 1
If Not rZelle Is Nothing Then
Hallo schauan,

danke.

dies war die Lösung!