Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Antworten Top
#3
Hallo schauan,

danke.

dies war die Lösung!
Antworten Top


Gehe zu:


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