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

Forumthread: Bestimmte Inhalte aus XML auslesen?

Bestimmte Inhalte aus XML auslesen?
18.02.2021 11:30:30
Sergej
Hallo Leute,
ich habe eine sehr lange XML-Datei "D:\Daten\Parametrik\Defintionen.xml". Aus der XML-Datei möchte ich gerne die Einträge zeilenweise in Excel untereinander auslesen, die zwischen beiden Anführungszeichen stehen. Es geht nur um Inhalte, die mit _Bibliothek= beginnen.
Beispiel aus der Datei:
_Bibliothek="daten/BUS_Bussystem.txt"
Nachher in Excel:
daten/BUS_Bussystem.txt
Wie mache ich das bitte per VBA?
Beste Grüße,
Sergej
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Inhalte aus XML auslesen?
18.02.2021 12:51:01
volti
Hallo Sergej,
hier mal eine Idee dazu...
Code:

[Cc]

Sub HoleDaten() Dim iFF As Integer, sFilename As String Dim sArr2() As String, sArr() As String Dim iOutZeile As Long, iZeile As Long sFilename = "D:&bsol;Daten&bsol;Parametrik&bsol;Defintionen.xml" iFF = FreeFile If Dir(sFilename) <> "" Then ' Ist Datei vorhanden? Open sFilename For Input As iFF ' Datei öffnen sArr = Split(Input(LOF(iFF), iFF), vbCrLf) ' Daten in Array einlesen Close iFF iOutZeile = 1 For iZeile = 0 To UBound(sArr) ' Alle Zeilen durchgehen sArr2 = Split(sArr(iZeile), "_Bibliothek=") ' Suchbegriff suchen If UBound(sArr2) > 0 Then ActiveSheet.Cells(iOutZeile, "A").Value = Replace(sArr2(1), Chr$(34), "") iOutZeile = iOutZeile + 1 End If Next iZeile End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Bestimmte Inhalte aus XML auslesen?
18.02.2021 14:04:17
Sergej
Hallo Karl-Heinz,
zunächst vielen herzlichen Dank. Das sieht schon gut aus. Ich habe das Makro ausgeführt und habe meine 1850 Zeilen drin. :-)
Nur anstatt: daten/BUS_Bussystem.txt wird die ganze Zeile importiert:
daten/BEL_Beleuchtung.txt _Name=Mastleuchte_1-fach Info1=Mastleuchte_1-fach></Mastleuchte_1-fach>
Ich muss schauen, wie ich nur den Inhalt zwischen beiden Anführungszeichen von _Bibliothek="......" importiert bekomme.
Beste Grüße,
Sergej
Anzeige
AW: Bestimmte Inhalte aus XML auslesen?
18.02.2021 14:56:45
volti
Hallo Sergej,
schaue mal, ob es jetzt besser passt.
Man muss halt immer alles relevante sehen und nicht nur Ausschnitte... :-)
Code:

[Cc]

Sub HoleDaten() Dim iFF As Integer, sFilename As String Dim sArr2() As String, sArr() As String Dim iOutZeile As Long, iZeile As Long 'D:&bsol;Daten&bsol;Parametrik&bsol;Defintionen.xml" sFilename = "C:&bsol;CustomUIEditor&bsol;Samples&bsol;Defintionen.xml" iFF = FreeFile If Dir(sFilename) <> "" Then ' Ist Datei vorhanden? Open sFilename For Input As iFF ' Datei öffnen sArr = Split(Input(LOF(iFF), iFF), vbCrLf) ' Daten in Array einlesen Close iFF iOutZeile = 1 For iZeile = 0 To UBound(sArr) ' Alle Zeilen durchgehen sArr2 = Split(sArr(iZeile), "_Bibliothek=") ' Suchbegriff suchen If UBound(sArr2) > 0 Then sArr2 = Split(sArr2(1) & Chr$(34), Chr$(34)) ActiveSheet.Cells(iOutZeile, "A").Value = sArr2(1) iOutZeile = iOutZeile + 1 End If Next iZeile End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Bestimmte Inhalte aus XML auslesen?
18.02.2021 15:02:48
volti
Sorry,
vergessen den Pfad wieder anzupassen:
Code:

[Cc]

Sub HoleDaten() Dim iFF As Integer, sFilename As String Dim sArr2() As String, sArr() As String Dim iOutZeile As Long, iZeile As Long sFilename = "D:&bsol;Daten&bsol;Parametrik&bsol;Defintionen.xml" iFF = FreeFile If Dir(sFilename) <> "" Then ' Ist Datei vorhanden? Open sFilename For Input As iFF ' Datei öffnen sArr = Split(Input(LOF(iFF), iFF), vbCrLf) ' Daten in Array einlesen Close iFF iOutZeile = 1 For iZeile = 0 To UBound(sArr) ' Alle Zeilen durchgehen sArr2 = Split(sArr(iZeile), "_Bibliothek=") ' Suchbegriff suchen If UBound(sArr2) > 0 Then sArr2 = Split(sArr2(1) & Chr$(34), Chr$(34)) ActiveSheet.Cells(iOutZeile, "A").Value = sArr2(1) iOutZeile = iOutZeile + 1 End If Next iZeile End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Bestimmte Inhalte aus XML auslesen?
18.02.2021 15:03:07
Sergej
Hallo Karl-Heinz,
vielen herzlichen Dank. Es funktioniert perfekt.
Beste Grüße,
Sergej
AW: Bestimmte Inhalte aus XML auslesen?
18.02.2021 15:16:32
volti
Hallo Sergej,
danke für die Rückmeldung. Es funktioniert ja jetzt.
Hier spaßeshalber eine noch etwas kürzere Variante....
Code:

[Cc]

Sub HoleDaten() Dim iFF As Integer, sFilename As String Dim sArr() As String Dim iOutZeile As Long, iZeile As Long sFilename = "D:&bsol;Daten&bsol;Parametrik&bsol;Defintionen.xml" iFF = FreeFile If Dir(sFilename) <> "" Then ' Ist Datei vorhanden? Open sFilename For Input As iFF ' Datei öffnen sArr = Split(Input(LOF(iFF), iFF), "_Bibliothek=") ' Daten in Array einlesen Close iFF iOutZeile = 1 For iZeile = 1 To UBound(sArr) ' Alle Zeilen durchgehen ActiveSheet.Cells(iOutZeile, "A").Value = _ Split(sArr(iZeile) & Chr$(34), Chr$(34))(1) iOutZeile = iOutZeile + 1 Next iZeile End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Bestimmte Inhalte aus XML auslesen?
18.02.2021 15:39:24
Sergej
Hallo Karl-Heinz,
es funktioniert auch :-)
Beste Grüße,
Sergej
;

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

Inhalte aus XML in Excel auslesen


Schritt-für-Schritt-Anleitung

Um bestimmte Inhalte aus einer XML-Datei in Excel auszulesen, kannst du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)".
    • Wähle "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Sub HoleDaten()
    Dim iFF As Integer, sFilename As String
    Dim sArr() As String, iOutZeile As Long, iZeile As Long

    sFilename = "D:\Daten\Parametrik\Defintionen.xml"
    iFF = FreeFile

    If Dir(sFilename) <> "" Then
        Open sFilename For Input As iFF
        sArr = Split(Input(LOF(iFF), iFF), vbCrLf)
        Close iFF
        iOutZeile = 1

        For iZeile = 0 To UBound(sArr)
            If InStr(sArr(iZeile), "_Bibliothek=") > 0 Then
                ActiveSheet.Cells(iOutZeile, 1).Value = Split(Split(sArr(iZeile), "_Bibliothek=")(1), """")(1)
                iOutZeile = iOutZeile + 1
            End If
        Next iZeile
    End If
End Sub
  1. Ändere den Pfad sFilename zu dem Ort, an dem deine XML-Datei gespeichert ist.
  2. Führe das Makro aus, indem du im VBA-Editor auf F5 drückst oder das Makro über Excel startest.

Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"

    • Überprüfe den Dateipfad in der sFilename-Variable. Stelle sicher, dass er korrekt ist.
  • Fehler: Keine Daten importiert

    • Stelle sicher, dass die XML-Datei das Format hat, das du erwartest. Überprüfe, ob _Bibliothek= in den Zeilen vorhanden ist.
  • Fehler: Importierte Zeilen sind nicht korrekt

    • Achte darauf, dass der Code die Anführungszeichen korrekt behandelt. Verwende Split und Replace, um die gewünschten Inhalte zu extrahieren.

Alternative Methoden

Wenn du keine VBA verwenden möchtest, kannst du auch:

  • Power Query nutzen: Importiere die XML-Datei direkt über "Daten" > "Abrufen und Transformieren" > "Aus Datei" > "Aus XML".
  • Die Excel-Funktion "Text in Spalten" verwenden, um die Daten, die du bereits in Excel hast, zu trennen.

Praktische Beispiele

Angenommen, deine XML-Datei enthält folgende Zeilen:

<Bibliothek>_Bibliothek="daten/BUS_Bussystem.txt"</Bibliothek>
<Bibliothek>_Bibliothek="daten/BEL_Beleuchtung.txt"</Bibliothek>

Nach dem Ausführen des Makros solltest du in Excel folgende Ergebnisse erhalten:

A
daten/BUS_Bussystem.txt
daten/BEL_Beleuchtung.txt

Tipps für Profis

  • Optimierung des Codes: Du kannst den Code weiter optimieren, indem du zusätzliche Fehlerbehandlungen hinzufügst oder die Leistung verbesserst, indem du in Arrays arbeitest.
  • Automatisierung: Überlege, das Makro automatisch beim Öffnen der Datei auszuführen.
  • Dokumentation: Halte den Code gut dokumentiert, um Änderungen und Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich mehrere XML-Dateien auslesen? Du kannst die Schleife erweitern, um mehrere Dateien zu verarbeiten, indem du eine Liste von Dateipfaden erstellst.

2. Kann ich die Daten in ein anderes Format exportieren? Ja, du kannst die Daten nach dem Auslesen in andere Formate wie CSV oder JSON exportieren, indem du die entsprechenden Funktionen in VBA verwendest.

3. Funktioniert dieser Code in Excel für Mac? Ja, der Code sollte auch in Excel für Mac funktionieren, allerdings kann der Dateipfad unterschiedlich sein. Achte darauf, den Pfad entsprechend anzupassen.

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