Office: XML-Daten importieren

Helfe beim Thema XML-Daten importieren in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe viele Dateien, die ich mittels VBA importieren möchte die Daten jeweils in einer Spalte einfügen möchte. Die Daten sind jeweils in... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von ThomasLG, 2. August 2006.

  1. XML-Daten importieren


    Hallo,

    ich habe viele Dateien, die ich mittels VBA importieren möchte die Daten jeweils in einer Spalte einfügen möchte.

    Die Daten sind jeweils in einer XML-Datei gespeichert.

    Wie kann ich mit VBA an die Daten gelangen, z. B. den Wert bekommen, der sich unter [DATEN] [BLOCK1] [param Data="00"] [DATA] verbirgt (003794)?


    Grüße
    ThomasLG

    :)
     
    ThomasLG, 2. August 2006
    #1
  2. Hallo ThomasLG,

    kann man die Daten über den variablen Data-Teil identifizieren, i.e. [DATEN] und [BLOCK1] ignorieren ?

    cu, Bernd
     
  3. Hallo Bernd,

    Block1 und Block2 können nicht ignoriert werden. Der eine Teil der Daten steht im Block1, und ein anderer in Block2. Data hat in Block1 und in Block2 u.U. gleiche Werte (in Block1 gibt es Data="00" und in Block2 gibt es Data="00", die enthaltenen Daten sind aber meist unterschiedlich).

    Grüße
    Thomas
     
    ThomasLG, 4. August 2006
    #3
  4. XML-Daten importieren

    Hallo Thomas,

    versuch's mal hiermit. Kaum getestet.

    HTH, Bernd
    --
    Option Explicit

    Sub Test()
    Dim strXML As String, objRegExp As Object

    If Not ReadXML("e:\test\test.xml", strXML) Then
    Debug.Print "File not found"
    Exit Sub
    End If

    Set objRegExp = CreateObject("vbscript.regexp")
    objRegExp.ignorecase = False

    ' aus BLOCK0
    Debug.Print ReadTag(objRegExp, strXML, "BLOCK0", "00")
    Debug.Print ReadTag(objRegExp, strXML, "BLOCK0", "01")
    ' aus BLOCK1
    Debug.Print ReadTag(objRegExp, strXML, "BLOCK1", "00")
    Debug.Print ReadTag(objRegExp, strXML, "BLOCK1", "01")

    ' Fehler, kein Tag
    Debug.Print ReadTag(objRegExp, strXML, "BLOCK0", "NoTag")

    ' Fehler, Groß-Kleinschreibung
    Debug.Print ReadTag(objRegExp, strXML, "block0", "00")

    ' Test von IgnoreCase
    objRegExp.ignorecase = True
    Debug.Print ReadTag(objRegExp, strXML, "block0", "00")

    Set objRegExp = Nothing
    End Sub

    Function ReadXML(ByVal strFileName As String, ByRef strXML As String) As Boolean
    Dim intHandle As Integer

    ReadXML = False
    If Dir(strFileName) = "" Then Exit Function

    intHandle = FreeFile
    Open strFileName For Binary As #intHandle
    strXML = Space(LOF(intHandle))
    Get intHandle, , strXML
    Close #intHandle

    ReadXML = True
    End Function

    Function ReadTag(objRegExp As Object, strXML As String, strBlock As String, strTag As String) As String
    Dim objMatchCollection As Object

    ReadTag = "Error in ReadTag: Tag Not Found"

    objRegExp.Pattern = "<" & strBlock & ">(?:.|\n)*?<Param +Data=""" & _
    strTag & """><DATA>(.*?)</DATA></Param>(?:.|\n)*?</" & strBlock & ">"

    ' Debug.Print objRegExp.Pattern
    Set objMatchCollection = objRegExp.Execute(strXML)
    If objMatchCollection.Count > 0 Then ReadTag = objMatchCollection(0).SubMatches(0)

    Set objMatchCollection = Nothing
    End Function
     
  5. Hi,

    danke, es funktioniert! Hast Du einen Tipp, wo ich etwas nachlesen kann, um es zu verstehen (vor allen .Pattern)?

    Grüße
    Thomas
     
    ThomasLG, 4. August 2006
    #5
  6. Hallo Thomas,

    google mal nach "Regular Expression". Liefert mir 78.400.000 Links ;-)

    Versuch's vielleicht aber auch mal hier:

    Regulärer Ausdruck – Wikipedia
    http://www.regenechsen.de/phpwcms/index.php?regex
    http://www.excel-center.de/foren/read.php?4,1922

    Eine ganz kurze Erklärung des benutzten Musters:

    Es wird nach etwas gesucht wie:
    HTML:
    (?:.|\n)*?(.*?)(?:.|\n)*?
    Die meisten Zeichen stehen für sich selber, mit Ausnahme der folgenden:

    . ist ein beliebiges Zeichen außer einem Zeilenwechsel
    \n ist ein Zeilenwechsel
    | ist ein logisches oder
    (?:) klammert ohne das geklammerte zwischenzuspeichern
    *? ist ein Wiederholungsoperator des vorausgegangenen, 0 oder mehr, soviele wie möglich aber nicht 'gefräßig'
    (?:.|\n)*? ist also eine beliebige Zeichenfolge, so kurz wie möglich, s.u.
    SP+ sind ein oder mehrere Leerzeichen (SP == genau 1 Leerzeichen, das konnte ich hier nicht darstellen?)
    .*? ist eine beliebige Zeichefolge ohne Zeilenwechsel, s.o.
    (.*?) speichert diese in einem sogenannten SubMatch, dieses ist der Teil der später zurückgeliefert wird

    Der Unterschied zwischen .* und .*? ist am leichtesten bei sowas zu sehen:
    Im String: "a-b-b-b" liefert "a.*b" den gesamten String zurück, "a.*?b" nur den Teil bis zum 1. b, "a-b"

    Es wird dabei (natürlich) immer versucht einen Treffer zu finden,
    im String "a-b-bc-bc" liefert "a.*bc" wiederum alles, "a.*?bc" wieder nur den Teil bis zum 1. c, "a-b-bc".

    HTH, Bernd
     
Thema:

XML-Daten importieren

Die Seite wird geladen...
  1. XML-Daten importieren - Similar Threads - XML Daten importieren

  2. MS Office 2021

    in Microsoft Outlook Hilfe
    MS Office 2021: Hallo, ich möchte alle .xml Anhänge in einem Ordner automatisch speichern mit einem Skript. Habe aber keine Ahnung wie das geht. Kann mir bitte jamand halfen?
  3. Exportieren von XML-Daten

    in Microsoft Excel Tutorials
    Exportieren von XML-Daten: Exportieren von XML-Daten Excel für Microsoft 365 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Mehr... Weniger...
  4. Importieren von XML-Daten

    in Microsoft Excel Tutorials
    Importieren von XML-Daten: Importieren von XML-Daten Excel für Microsoft 365 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Mehr... Weniger...
  5. Anfügen oder Überschreiben von zugeordneten XML-Daten

    in Microsoft Excel Tutorials
    Anfügen oder Überschreiben von zugeordneten XML-Daten: Anfügen oder Überschreiben von zugeordneten XML-Daten Excel für Microsoft 365 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Mehr......
  6. Datenimport von XML Daten

    in Microsoft Access Hilfe
    Datenimport von XML Daten: Hallo ich möchte gerne XML-Daten in eine Access-Datenbank importieren. Die Datenbank muß ich noch anlegen die Tabellen ebenso, aber wie kann ich dafür sorgen, das der Import der Reihe nach...
  7. Zusammenführen mehrerer Dateien mit XML-Daten

    in Microsoft Excel Hilfe
    Zusammenführen mehrerer Dateien mit XML-Daten: Hallo Excel-Spezis, ich möchte mich gern bei euch wegen eines Lösungsvorschlags erkundigen: Das PROBLEM: aus verschiedenen Dateien sollen bestimmte Daten zusammengeführt werden, so dass die...
  8. Import XML-Daten

    in Microsoft Access Hilfe
    Import XML-Daten: Hallo zusammen ! ich habe mal eine theoretische Frage. Demnächst muß ich XML-Daten in Access importieren und bearbeiten. Ich habe aber leider noch keine Probedaten erhalten und werde auch...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden