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

Forumthread: xml per VBA erstellen

xml per VBA erstellen
30.11.2020 16:23:40
Werner
Hallo,
ich erstelle eine XML Datei per VBA eigentlich kein Problem, aber wie füge ich einem Element ein "Type" hinzu?
Code VBA:
Dim xml As Object
Dim xmlORDER_LIST As MSXML2.IXMLDOMElement
Dim xmlORDER As MSXML2.IXMLDOMElement
Set xml = CreateObject("MSXML2.DOMDocument")
Set xmlORDER_LIST = xml.createElement("ORDER_LIST")
xml.appendChild xmlORDER_LIST
Set xmlORDER = xml.createElement("ORDER")
xmlORDER_LIST.appendChild xmlORDER
With xmlORDER
.appendChild(xml.createElement("Emloyee55")).Text = "Test"
.appendChild(xml.createElement("Phone")).Text = "05111231254"
End With
End Sub
und so sollte das in XML Datei aussehen:
ORDER_LIST
ORDER
Emloyee55>Test
Phone type="other">05111231254
ORDER
ORDER_LIST
Für eine Hilfestellung wäre ich sehr dankbar
Best Grüße
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: xml per VBA erstellen
30.11.2020 17:10:08
Yal
Hallo Werner,
wenn es innerhalb eines Tags ist, dann ist es ein Attribut.
Wirf eine Auge auf IXMLDOMAttribute.
Viel Erfolg
Yal
AW: xml per VBA erstellen
01.12.2020 09:09:55
Werner
Hallo Yal,
der Hinweis hat mir weitergeholfen.
Vielen Dank
Werner
Vielen Dank für die Rückmeldung. oT
01.12.2020 10:34:47
Yal
Anzeige
AW: Vielen Dank für die Rückmeldung. oT
02.12.2020 09:59:31
Werner
Hallo Yal,
benötige nochmals eine kleine Hilfestellung bzgl. XML.
Mein Code sieht so aus:
'neues XML - Objekt erzeugen
Set xml = New MSXML2.DOMDocument60
' Die oberste Hierarchiestufe erstellen
xml.LoadXML ""
xml.appendChild xml.createProcessingInstruction("xml", "version=""1.0"" encoding=""ISO-8859-1""")
Set xmlORDER_LIST = xml.createElement("ORDER_LIST")
xml.appendChild xmlORDER_LIST
' Die ORDER unter ORDER_LIST erstellen
Set xmlORDER = xmlORDER_LIST.appendChild(xml.createElement("ORDER"))
xmlORDER_LIST.appendChild xmlORDER
' Creates Attribute für ORDER Element
Set xmlORDERATTR = xml.createAttribute("xmlns")
xmlORDERATTR.NodeValue = "http://www.opentrans.org/XMLSchema/1.0"
xmlORDER.setAttributeNode xmlORDERATTR
Set xmlORDER_HEADER = xmlORDER.appendChild(xml.createElement("ORDER_HEADER"))
xmlORDER.appendChild xmlORDER_HEADER
und die XML Datei so:
?xml version="1.0" encoding="ISO-8859-1"?
ORDER_LIST
ORDER xmlns="http://www.opentrans.org/XMLSchema/1.0"
ORDER_HEADER xmlns=""
CONTROL_INFO
GENERATOR_INFO>Shopware5
GENERATOR_DATE>02.12.2020
/CONTROL_INFO
ORDER_INFO
Das Problem ist im Element "ORDER_HEADER" dort steht nun auch xmlns="" und das sollte nicht sein. Kann man das Attribut auch wieder ausstellen.
Vielen Dank im Voraus
Werner
Anzeige
AW: Vielen Dank für die Rückmeldung. oT
03.12.2020 17:14:59
Yal
Sorry Werner, keine Ahnung.
Es scheint sich einfach zu vererben.
Mein XML-Wissen reicht an der Stelle nicht.
VG
Yal
AW: Vielen Dank für die Rückmeldung. oT
03.12.2020 18:00:11
Werner
Hallo Yal,
kein Problem, hat sich mittlerweile zum positiven Erledigt. Tino hat mir die Lösung übermittelt.
Das war der Punkt:
xmlORDER.setAttribute "xmlns", "http://www.opentrans.org/XMLSchema/1.0"
Ich bin zu kompliziert an die Sache gegangen.
Besten Dank nochmals und einen
schönen Abend
Werner
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

XML mit VBA erstellen: Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

Um eine XML-Datei mit VBA zu erstellen, kannst du folgende Schritte befolgen:

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

  2. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)", wähle Einfügen und dann Modul.

  3. VBA-Code einfügen: Füge den folgenden Code in das Modul ein:

    Sub CreateXMLFile()
       Dim xml As Object
       Set xml = CreateObject("MSXML2.DOMDocument60")
       xml.appendChild xml.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")
    
       Dim xmlORDER_LIST As MSXML2.IXMLDOMElement
       Set xmlORDER_LIST = xml.createElement("ORDER_LIST")
       xml.appendChild xmlORDER_LIST
    
       Dim xmlORDER As MSXML2.IXMLDOMElement
       Set xmlORDER = xmlORDER_LIST.appendChild(xml.createElement("ORDER"))
    
       Dim xmlORDERATTR As MSXML2.IXMLDOMAttribute
       Set xmlORDERATTR = xml.createAttribute("xmlns")
       xmlORDERATTR.NodeValue = "http://www.opentrans.org/XMLSchema/1.0"
       xmlORDER.setAttributeNode xmlORDERATTR
    
       Dim xmlORDER_HEADER As MSXML2.IXMLDOMElement
       Set xmlORDER_HEADER = xmlORDER.appendChild(xml.createElement("ORDER_HEADER"))
    
       ' Weitere Elemente hinzufügen
       xmlORDER_HEADER.appendChild xml.createElement("CONTROL_INFO").Text = "Shopware5"
       xmlORDER_HEADER.appendChild xml.createElement("GENERATOR_DATE").Text = "02.12.2020"
    
       ' XML-Datei speichern
       xml.Save "C:\DeinPfad\DeineDatei.xml"
    End Sub
  4. Code anpassen: Stelle sicher, dass du den Speicherort der XML-Datei anpasst.

  5. Makro ausführen: Drücke F5, um das Makro auszuführen und die XML-Datei zu erstellen.


Häufige Fehler und Lösungen

  • XML-Datei wird nicht erstellt: Überprüfe den Speicherort und die Berechtigungen. Stelle sicher, dass der Pfad korrekt ist und dass du Schreibrechte hast.
  • Fehlender Verweis auf MSXML: Stelle sicher, dass du den richtigen Verweis auf "Microsoft XML, v6.0" in den Verweisen des VBA-Editors gesetzt hast, um MSXML2.DOMDocument60 nutzen zu können.
  • Fehler beim Hinzufügen von Attributen: Wenn du ein Attribut wie xmlns nicht korrekt hinzufügst, verwende die Methode setAttributeNode, um es dem Element zuzuweisen.

Alternative Methoden

Wenn du XML aus Excel erstellen möchtest, kannst du auch die Excel to XML-Funktion verwenden. Gehe dazu in Excel auf Datei > Speichern unter und wähle das Format XML-Daten (*.xml) aus. Dies ist eine einfache Möglichkeit, ohne VBA-Code eine XML-Datei zu erstellen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du ein XML-Schema erstellen und Daten aus einer Excel-Tabelle hinzufügen kannst:

Sub CreateXMLFromExcel()
    Dim xml As Object
    Set xml = CreateObject("MSXML2.DOMDocument60")

    Dim root As MSXML2.IXMLDOMElement
    Set root = xml.createElement("Data")
    xml.appendChild root

    Dim row As Integer
    For row = 1 To 10 ' Beispiel für 10 Zeilen
        Dim entry As MSXML2.IXMLDOMElement
        Set entry = xml.createElement("Entry")
        entry.appendChild xml.createElement("Value").Text = Cells(row, 1).Value
        root.appendChild entry
    Next row

    xml.Save "C:\DeinPfad\ExcelData.xml"
End Sub

Tipps für Profis

  • Verwendung von DOMDocument60: Nutze MSXML2.DOMDocument60 für die besten Ergebnisse und Kompatibilität mit modernen XML-Funktionen.
  • Debugging: Verwende Debug.Print im Code, um den Status von Variablen zu überprüfen und Probleme beim Erstellen der XML-Datei zu diagnostizieren.
  • Verwalte Namespaces: Achte darauf, wie du Namespaces in deinem XML-Schema verwaltest, um Konflikte zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich ein XML-Schema in Excel erstellen?
Du kannst ein XML-Schema in Excel erstellen, indem du deine Daten strukturierst und dann im Menü Entwicklertools die Funktion XML-Schema erstellen verwendest.

2. Welche Excel-Version benötige ich für MSXML2?
MSXML2 ist in den meisten modernen Excel-Versionen verfügbar. Stelle sicher, dass du Excel 2007 oder neuer verwendest, um die vollen Funktionen von VBA zu nutzen.

3. Wie kann ich bestehende XML-Dateien in Excel importieren?
Um XML-Dateien in Excel zu importieren, gehe zu Daten > XML > XML-Daten importieren und wähle die entsprechende XML-Datei aus. Excel wird versuchen, die Daten in Tabellenform darzustellen.

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