Spalten ohne xml-Code nicht ausfüllen (war:[Excel])
#1
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
Top
#2
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • tomy38
Top
#3
Hallo schauan,

danke.

dies war die Lösung!
Top


Gehe zu:


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