Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Importieren von bestimmten Daten aus XML Datei

Importieren von bestimmten Daten aus XML Datei
23.01.2019 12:21:36
bestimmten
Hallo Leute,
ich hab seit Tagen ein Problem, dass ich relativ unschön gelöst habe.
Undzwar habe ich eine XML-Datei (bzw. mehrere, die immer gleich aufgebaut sind)
dann kommen da einige Zeilen wie , etc
Dann kommt

1x11, 1x22, 1x33, 1x01, 1x08, 1x05,
1x02, 1x03, 1x43, 1x02, 1x08, 1x03,
.....

es sind immer 160 Daten, was ich erreichen will: die Werte hinter dem x jeweils in Excel einfügen, ein Wert pro Zelle (untereinander), die ersten drei Werte aber nicht mitkopieren.
Meine bisherige Lösung: XML-Datei in Textdatei umwandeln, über Notepad++ per Macro alles außer die Werte entfernen, diese dann untereinander schreiben lassen (also
01
08
05 ....)
und dann die ersten 3 Zeilen löschen.
Dann über VBA als Textdatei in meine Excel-Datei einfügen...
Gibts da abhilfe?
Mit freundlichen Grüßen
Simon
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Importieren von bestimmten Daten aus XML Datei
23.01.2019 12:43:01
bestimmten
Hola,
verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
Danke.
Gruß,
steve1da
AW: Importieren von bestimmten Daten aus XML Datei
23.01.2019 12:56:20
bestimmten
Hallo
Kanst Du die XML Datei hochladen?
AW: Importieren von bestimmten Daten aus XML Datei
23.01.2019 13:46:56
bestimmten
Hallo
Sub ReadXml()

  Dim FileName As String
  Dim InString As String
  Dim MyErg(200) As String
  Dim MySplit() As String
  Dim cc As Long
  Dim i As Long
  
  cc = 1
  
  FileName = "C:\Users\....\Neu1.xml"  'Anpassen 
  Open FileName For Input As #1
  Do While Not EOF(1)
    Line Input #1, InString
    If Mid(InString, 1, 2) = "1x" Then
      MySplit = Split(InString, ",")
      For i = Lbound(MySplit) To Ubound(MySplit)
        MyErg(cc) = Replace(MySplit(i), "1x", "")
        If MyErg(cc) <> "" Then cc = cc + 1
      Next i
    End If
  Loop
  Close #1
  For i = 4 To cc
    Worksheets("Tabelle2").Cells(i - 3, 1).Value = "'" & MyErg(i)  ' Anpassen 
  Next i
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Anzeige
AW: Importieren von bestimmten Daten aus XML Datei
23.01.2019 14:09:33
bestimmten
Mega, vielen Dank!!
Danke dir!
Hätte noch eine Frage, habe das selbe Problem mit dem gleichen Aufbau und den selben "Regeln", nur mit 0x anstatt 1x. Ich dachte, wenn ich das in der VBA ändere reicht das, aber wenn ich das mit 0x mache scheint es nicht zu klappen, weißt du warum?
AW: Importieren von bestimmten Daten aus XML Datei
23.01.2019 14:13:43
bestimmten
Oh, ich sehe grade, dass es in dem zweiten XML-Format schon zuvor "0x" gibt.
0x00001
und einmal 0x001221
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Importieren von XML-Daten in Excel


Schritt-für-Schritt-Anleitung

  1. XML-Datei vorbereiten: Stelle sicher, dass deine XML-Datei korrekt formatiert ist. Die Struktur sollte klar sein, z.B. mit den Tags <data> und <block>.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  3. Neues Modul erstellen: Klicke im Menü auf Einfügen > Modul, um ein neues Modul zu erstellen.

  4. VBA-Code eingeben: Kopiere den folgenden Code in das Modul:

    Sub ReadXml()
       Dim FileName As String
       Dim InString As String
       Dim MyErg(200) As String
       Dim MySplit() As String
       Dim cc As Long
       Dim i As Long
    
       cc = 1
       FileName = "C:\Users\....\Neu1.xml"  'Anpassen
       Open FileName For Input As #1
       Do While Not EOF(1)
           Line Input #1, InString
           If Mid(InString, 1, 2) = "1x" Then
               MySplit = Split(InString, ",")
               For i = LBound(MySplit) To UBound(MySplit)
                   MyErg(cc) = Replace(MySplit(i), "1x", "")
                   If MyErg(cc) <> "" Then cc = cc + 1
               Next i
           End If
       Loop
       Close #1
       For i = 4 To cc
           Worksheets("Tabelle2").Cells(i - 3, 1).Value = "'" & MyErg(i)  'Anpassen
       Next i
    End Sub
  5. Anpassen des Dateipfads: Ändere den Dateipfad in der Zeile FileName = "C:\Users\....\Neu1.xml" zu dem Speicherort deiner XML-Datei.

  6. Makro ausführen: Schließe den VBA-Editor und kehre zu Excel zurück. Führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler beim Öffnen der XML-Datei: Stelle sicher, dass der Dateipfad korrekt ist und die Datei existiert.

  • Daten werden nicht eingelesen: Überprüfe die Struktur der XML-Datei. Es muss die korrekte Tagstruktur vorhanden sein.

  • VBA-Code funktioniert nicht: Achte darauf, dass der Code in einem Modul und nicht in einem Arbeitsblatt eingefügt wird.


Alternative Methoden

  • XML-Daten importieren über Excel: Du kannst auch die Funktion Daten > Abrufen und Transformieren verwenden, um XML-Daten direkt in Excel zu importieren.

  • Excel in XML umwandeln: Wenn Du eine Excel-Datei in XML umwandeln möchtest, gehe zu Datei > Speichern unter und wähle XML-Daten (*.xml) als Format.


Praktische Beispiele

  • Beispiel 1: Angenommen, Du hast mehrere XML-Dateien, die Du in Excel importieren möchtest. Nutze eine Schleife im VBA, um alle Dateien in einem bestimmten Ordner zu öffnen und die Daten zu extrahieren.

  • Beispiel 2: Wenn Du nur bestimmte Daten aus der XML-Datei benötigst, passe den Code an, um nur die relevanten Tags zu filtern.


Tipps für Profis

  • VBA optimieren: Nutze Arrays, um die Leistung beim Importieren von großen XML-Datenmengen zu verbessern.

  • Fehlerbehandlung einfügen: Implementiere Fehlerbehandlungsroutinen, um unerwartete Fehler während des Imports abzufangen.

  • Dokumentation: Kommentiere Deinen VBA-Code gut, damit Du später Änderungen leichter nachverfolgen kannst.


FAQ: Häufige Fragen

1. Wie kann ich mehrere XML-Dateien in Excel importieren?
Du kannst eine Schleife im VBA-Code verwenden, um jede XML-Datei in einem bestimmten Ordner zu durchlaufen und die Daten zu importieren.

2. Warum funktioniert der VBA-Code nicht bei "0x" statt "1x"?
Der Code muss angepasst werden, um die Bedingung für "0x" zu berücksichtigen. Ändere einfach die Zeile If Mid(InString, 1, 2) = "1x" Then zu If Mid(InString, 1, 2) = "0x" Then.

3. Welche Excel-Version benötige ich für diesen Code?
Der Code wurde in Excel 2013 getestet, sollte aber in neueren Versionen ebenfalls funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige