VBA & XML

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von petaod.

    Hallo,

    vorweg ich kenne mich mit der Excel VBA Zusammenarbeit mit XML überhaupt nicht aus. Ich habe in einer Excel Datei Daten die ich mit Hilfe von VBA in eine XML Datei an die richtige Stelle einlesen und abspeichern möchte. Die Excel Datei ist die Quelldatei mit den richtigen Werten um eine XML Datei zu aktualisieren. In der Excel sind die Daten wie folgt angeordnet. In der 1. Spalte der <Variant Name> (z.B. ABC), in der 2. Spalte steht <processClass>, in der 3. Spalte die <id>. In den Spalten D bis F stehen die auszulesenden bzw. einzutragenden Wert <mainVersion>, <subVersion>, <patchVersion>

    Die VBA soll nun die einzelnen Knoten in der XML nach dem jeweiligen VariantName, danach nach der processClass und der id durchsuchen und die richtige Stelle finden. Dort soll er dann erst die Zahlen (z.B. 003) der <mainVersion> in der XML mit der aus der Excel vergleichen. Wenn diese Werte identisch sind soll er die <subVersion>, vergleichen und danach die <patchVersion>. Wenn die Werte unterschiedlich sind, sollen die Werte aus der Excel in die XML übertragen werden und abgespeichert werden. Und dies soll dann fuer alle Zeilen (ca. 70) der Excel Datei durchgefuehrt werden.

    Evtl. ist es auch möglich die auf dem anderen Weg an die Sache heranzugehen, in dem man die Daten in den Knoten in der XML nach und nach ausliest und anschliessend, sie mit den Werten in der Excel vergleicht und ggf. ändert.

    Auszug aus der XML Datei findet ihr unten stehend.

    Ich hoffe ihr könnt mir bei dieser Sache weiterhelfen, da meine XML Kenntnisse sehr gering bzw. gleich null sind.

    Vielen Dank im Voraus

    Wolfi



    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <Nr>
    <header createdBy="" date="2011-04-27+08:00" TypeInfo="" time="15:02:44" />
    - <standard svtVersion="1">
    - <Test Variant="ABC">
    - <Addresses>
    <Address physicalOffset="16" />
    </Addresses>
    <Test ActiveNotifyEnabled="true" CodingEnabled="false" DiffProgEnabled="false" SecurityEnabled="false" />
    - <standardSVK SVKVersion="1" progDepChecked="1">
    - <partIdentification>
    <processClass>AHEL</processClass>
    <id>00000925</id>
    <mainVersion>000</mainVersion>
    <subVersion>193</subVersion>
    <patchVersion>001</patchVersion>
    </partIdentification>

    - <partIdentification>
    <processClass>TBTD</processClass>
    <id>00000929</id>
    <mainVersion>003</mainVersion>
    <subVersion>003</subVersion>
    <patchVersion>040</patchVersion>
    </partIdentification>

    - <partIdentification>
    <processClass>SWSW</processClass>
    <id>0000092A</id>
    <mainVersion>003</mainVersion>
    <subVersion>003</subVersion>
    <patchVersion>080</patchVersion>
    </partIdentification>

    - <partIdentification>
    <processClass>SWSw</processClass>
    <id>0000092B</id>
    <mainVersion>002</mainVersion>
    <subVersion>007</subVersion>
    <patchVersion>002</patchVersion>

    </partIdentification>
    </standardSVK>



    - <Test Variant="MID"> (Anmerkung: naechster Testknoten)
    - <Addresses>
    <Address physicalOffset="38" />
    </Addresses>
    <Test ActiveNotifyEnabled="true" CodingEnabled="true" DiffProgEnabled="false" SecurityEnabled="false" />
    - <standardSVK SVKVersion="1" progDepChecked="1">
    - <partIdentification>
    <processClass>FACD</processClass>
    <id>00000168</id>
    <mainVersion>002</mainVersion>
    <subVersion>005</subVersion>
    <patchVersion>006</patchVersion>
    </partIdentification>
    .
    .
    .
    . (Anmerkung: gleiche Abfolge wie oben)
    </standardSVK>

    </Test>
    </Nr>

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Wolfi“ ()