Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

XML-Datei mit VBA bearbeiten

Forumthread: XML-Datei mit VBA bearbeiten

XML-Datei mit VBA bearbeiten
22.08.2005 17:15:33
Baldur
Hallo Leute,
ich habe eine Datei in Form einer XML-Struktur, allerdings mit dem Dokumententyp TS. Diese Datei will ich jetzt bearbeiten, genauer gesagt einige Kind-Elemente löschen und neue einfügen.
Bisher verwende ich folgenden Befehl (der allerdings nicht funktioniert):
Dim xml_TSDoc As MSXML2.DOMDocument
Set xml_TSDoc = New MSXML2.DOMDocument
xml_TSDoc.loadXML ("c:\Datei.ts")
Auch danach werden keine Kind-Elemente von erkannt xml_TSDoc erkannt.
Ich hoffe, es kann mir jemand helfen.
LG Baldur
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Fehler beim Öffnen der XML-Datei (DTD unbekannt)
23.08.2005 11:49:09
Baldur
Hi Leute,
ich habe mittlerweile festgestellt, dass wohl das Schema der XML-(bzw. TS-)Datei nicht deklariert ist.
Hier noch der Aufbau meiner Datei:


Name1

Text1
Text2


Text1
Text2



......


Die genaue Meldung lautet: "Das Element "TS" wird verwendet, aber es ist im DTD/Schema nicht deklariert."
Wie kann man so eine Deklaration durchführen?
LG und Danke im Voraus.
Baldur
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

XML-Datei mit VBA bearbeiten


Schritt-für-Schritt-Anleitung

Um eine XML-Datei mit VBA zu bearbeiten, kannst du folgende Schritte ausführen:

  1. Vorbereitung: Stelle sicher, dass die Microsoft XML-Bibliothek in deinem Excel aktiviert ist. Gehe dazu auf Extras > Verweise und aktiviere Microsoft XML, v6.0 (oder eine andere Version).

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

  3. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx) und wähle Einfügen > Modul.

  4. Code für das Laden der XML-Datei: Verwende den folgenden Code, um die XML-Datei zu laden:

    Dim xml_TSDoc As MSXML2.DOMDocument
    Set xml_TSDoc = New MSXML2.DOMDocument
    
    ' DTD-Datei öffnen
    xml_TSDoc.async = False
    If xml_TSDoc.Load("C:\Datei.ts") Then
       MsgBox "XML-Datei erfolgreich geladen!"
    Else
       MsgBox "Fehler beim Laden der XML-Datei: " & xml_TSDoc.parseError.reason
    End If
  5. Bearbeiten der XML-Struktur: Du kannst jetzt Kind-Elemente löschen oder neue hinzufügen. Beispiel:

    Dim node As MSXML2.IXMLDOMNode
    Set node = xml_TSDoc.SelectSingleNode("//ElementName") ' Ändere ElementName entsprechend
    
    If Not node Is Nothing Then
       node.ParentNode.removeChild node
    End If
  6. XML-Datei speichern: Um die XML-Datei zu speichern, nutze diesen Code:

    xml_TSDoc.Save "C:\Datei_aktualisiert.ts"

Häufige Fehler und Lösungen

  • Fehler beim Laden der XML-Datei: Wenn du die Meldung "Das Element 'TS' wird verwendet, aber es ist im DTD/Schema nicht deklariert" erhältst, liegt es daran, dass das Schema nicht vorhanden ist. Du musst sicherstellen, dass die DTD korrekt deklariert ist.

  • Kind-Elemente werden nicht erkannt: Überprüfe, ob der XPath-Ausdruck korrekt ist. Eine falsche Schreibweise kann dazu führen, dass das Element nicht gefunden wird.


Alternative Methoden

Falls du Schwierigkeiten hast, die XML-Datei direkt in Excel zu bearbeiten, kannst du auch folgende Methoden ausprobieren:

  • XML in Excel importieren: Gehe zu Daten > Aus XML-Datenquelle, um die XML-Datei zu importieren und in eine Tabelle umzuwandeln.

  • Online-Tools: Es gibt verschiedene Online-Tools, mit denen du XML-Dateien bearbeiten kannst. Diese können nützlich sein, wenn du keine Programmiererfahrung hast.


Praktische Beispiele

Hier sind einige praktische Beispiele für das Bearbeiten von XML-Dateien mit VBA:

  1. Zeilenumbruch in Text: Wenn du in einem Textfeld einen Zeilenumbruch hinzufügen möchtest, kannst du dies folgendermassen tun:

    Dim textNode As MSXML2.IXMLDOMNode
    Set textNode = xml_TSDoc.SelectSingleNode("//Textfeld")
    textNode.Text = Replace(textNode.Text, "Text1", "Text1" & vbCrLf)
  2. Hinzufügen eines neuen Kind-Elements: Um ein neues Kind-Element hinzuzufügen, kannst du den folgenden Code verwenden:

    Dim newNode As MSXML2.IXMLDOMNode
    Set newNode = xml_TSDoc.createElement("NeuesElement")
    newNode.Text = "Neuer Text"
    xml_TSDoc.DocumentElement.appendChild newNode

Tipps für Profis

  • VBA Zeilenumbruch verwenden: Um in einer XML-Datei einen Zeilenumbruch zu implementieren, verwende vbCrLf oder vbNewLine im Text.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinem VBA-Code, um unerwartete Fehler besser zu handhaben. Zum Beispiel:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    
    Fehlerbehandlung:
    MsgBox "Fehler: " & Err.Description

FAQ: Häufige Fragen

1. Wie öffne ich eine DTD-Datei in VBA?
Du kannst eine DTD-Datei nicht direkt in VBA öffnen, aber du kannst sie in einem Texteditor bearbeiten und sicherstellen, dass sie korrekt deklariert ist.

2. Kann ich XML-Dateien in Excel direkt bearbeiten?
Ja, du kannst XML-Dateien in Excel importieren und dann die Daten in einer Tabelle bearbeiten. Allerdings ist das Bearbeiten der Struktur nur mit VBA möglich.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige