Auch wenn wir Excel-Fetischisten das nicht so gerne hören:
Es gibt noch andere Systeme da draußen in dieser bösen Welt, mit denen man hin und wieder Daten austauschen muss. Insbesondere in Zeiten des allgegenwärtigen Internets erfreut sich hier ein Format besonderer Beliebtheit:
Das XML-Format.
Wie man seine Excel-Tabelle als XML-Datei speichert oder eine vorliegende XML-Datei in eine Excel-Tabelle importiert, zeige ich im heutigen Artikel.
Und so geht’s:
Was ist eine XML-Datei?
XML ist eine sogenannte Auszeichnungssprache, mit deren Hilfe man hierarchisch strukturierte Daten in einer Textdatei abspeichern kann (siehe dazu auch Wikipedia).
Eine solche Struktur besteht in einer XML-Datei aus einzelnen Elementen. Jedes Element kann entweder einen Text oder ein weiteres untergeordnetes Element enthalten. Dadurch kann also eine Verschachtelung von Elementen entstehen. Jedes Element ist dabei von einem Anfangs- und einem End-Auszeichner umschlossen, den sogenannten Tags. Dies sieht z.B. so aus:
<element>Name</element>
Und eine Verschachtelung könnte so aussehen:
<adresse>
<strasse>Musterstrasse</strasse>
<ort>Entenhausen</ort>
</adresse>
Das soll uns als Hintergrundwissen erst einmal reichen.
Die Ausgangstabelle
Ausgangsbasis für unsere Übung soll eine sehr einfache Adressenliste sein, bestehend aus folgenden Spalten:
(Diese Adressenliste kannst du bei Bedarf hier herunterladen)
Diese simple Liste soll nun in eine XML-Datei umgewandelt werden. Damit Excel weiß, wie die Struktur der XML-Datei aussehen soll und welche Datentypen für die einzelnen Elemente verwendet werden, brauchen wir eine sogenannte Schema-Datei.
Eine Schema-Datei erstellen
Wer sich etwas in die Materie einlesen möchte, sei auf diesen Wikipedia-Artikel verwiesen. Dort werden auch die verschiedenen Datentypen beschrieben.
Um eine Schema-Datei zu erzeugen, brauchst du einen einfachen Texteditor. Der Windows-Editor reicht für unsere Zwecke aus, etwas mehr Komfort und Übersicht bietet Notepad++ (einfach in die Suchmaschine deiner Wahl eingeben und kostenlos herunterladen)
In den Editor gibst du folgende Daten ein:
Achte bei der Eingabe unbedingt darauf, dass jedes geöffnete Element auch wieder geschlossen werden muss (Notepad++ unterstützt dich dabei).
Die allererste Zeile ist nicht kriegsentscheidend, gehört aber der Vollständigkeit halber zu einer „sauberen“ XML-Datei dazu:
<?xml version="1.0" encoding="UTF-8"?>
Damit legen wir eine Struktur fest, die aus dem Element „Adressen“ besteht, welches untergeordnete Elemente namens „Adresszeile“ enthalten kann. Dabei kann es keine oder beliebig viele Adresszeilen geben (Parameter minOccurs und maxOccurs).
Jedes Element „Adresszeile“ besteht wiederum aus den Unterelementen „Vorname“, „Name“, „Strasse“, „PLZ“ und „Ort“. Ich habe hier exakt die gleichen Bezeichnungen wie in der Excel-Tabelle verwendet, ebenso sollte die Reihenfolge Elemente genau mit der in der Tabelle übereinstimmen, das macht die anschließende Zuordnung einfacher.
Die Einrückungen sind nicht zwingend erforderlich, aus Gründen der Übersicht aber dringend zu empfehlen. So ist leichter zu erkennen, welche Elemente zusammengehören und ob jedes Element auch wieder geschlossen wurde.
Die Datei speicherst du anschließend unter dem Namen schema.xsd ab (wer sich die Tipperei ersparen möchte, kann sich hier die fertige Datei herunterladen)
Damit sind die Vorarbeiten abgeschlossen und wir wechseln wieder zu Excel.
Entwicklertools einblenden
Für den nächsten Schritt brauchen wir die Registerkarte mit den Entwicklertools, die standardmäßig in Excel nicht angezeigt wird. In diesem Artikel habe ich für die verschiedenen Excel-Versionen beschrieben, wie man dieses Menü einblendet.
Öffne nun die Entwicklertools und klicke dort auf die Schaltfläche „Quelle“:
Dadurch wird rechts der Arbeitsbereich „XML-Quelle“ eingeblendet, in dem du dann unten auf die Schaltfläche „XML-Zuordnungen…“ klickst:
In dem sich nun öffnenden Fenster wählst du über die Schaltfläche „Hinzufügen…“ die zuvor erstellte Datei „schema.xsd“.
Nur kommt ein Fenster, in dem man den sogenannten Wurzelknoten auswählen muss, also die oberste Ebene in unserer Struktur. In unserem Beispiel ist das der Eintrag „Adressen“:
Wenn du danach die beiden Fenster mit OK geschlossen hast, sollte der Arbeitsbereich „XML-Quelle“ wie folgt aussehen:
Klicke jetzt auf das oberste Element „Adressen“ und ziehe es mit der Maus nach links über die Excel-Tabelle und lasse es es ganz links oben über der Überschrift „Vorname“ fallen.
Die Tabelle verwandelt sich jetzt in eine formatierte Tabelle:
Solltest du die XML-Zuordnung an der falschen Stelle fallengelassen haben, drücke einfach die Tastenkombination Strg+Z, um die Aktion rückgängig zu machen, und versuche es anschließend nochmal.
Dass es sich dabei aber nicht um eine „normale“ formatierte Tabelle handelt, erkennt man an verschiedenen Stellen Wenn man rechts im Fenster „XML-Quelle“ auf eines der Adressenelement klickt, wird die entsprechende Spalte in der Tabelle markiert. Daran sieht man auch, ob die Zuordnung richtig funktioniert hat:
Außerdem enthält das Kontextmenü der Tabelle einen neuen Eintrag. Führe einen Rechtsklick mit der Maus irgendwo innerhalb der Tabelle aus und du findest jetzt den Menüpunkt „XML“:
Der letzte Schritt: Die XML-Datei erstellen
Wenn du bis hierher folgen konntest, hast du alles richtig gemacht und kannst jetzt endlich die XML-Datei erstellen. Wähle dazu entweder in dem oben gezeigten Kontextmenü den Punkt „XML | Exportieren…“ oder die gleichlautende Schaltfläche in den Entwicklertools.
Du brauchst nur noch den gewünschten Speicherort auszuwählen und einen Dateinamen einzugeben. Der Dateityp ist automatisch auf „XML-Dateien (*.xml) voreingestellt:
Zur Kontrolle des Ergebnisses kannst du die Datei in deinem Texteditor oder auch in einem Webbrowser öffnen:
…und anders herum geht natürlich auch!
Selbstverständlich kannst du diese XML-Definition jetzt auch dazu nutzen, die XML-Datei wieder in eine Excel-Tabelle umzuwandeln. Dazu löschen wir erst alle vorhandenen Datensätze aus der Tabelle, die formatierte Tabelle an sich muss aber erhalten bleiben:
Du ahnst es vermutlich schon: Ein Rechtsklick in die Tabelle, dann die Option „XML | Importieren…“ (oder der gleiche Pfad über die Entwicklertools) bringen dich zur Auswahl der zu importierenden XML-Datei:
Und schon ist die Adressenliste in Excel wiederhergestellt.
Ein kleiner Tipp zum Schluss
Es könnte ja sein, dass du regelmäßig deine Adressentabelle durch einen XML-Import erweitern musst. Standardmäßig wird die vorhandene Tabelle aber immer überschrieben. In den Entwicklertools gibt es aber die Schaltfläche „Eigenschaften zuordnen“. In dem sich nun öffnenden Fenster aktivierst du einfach die Option „Vorhandene XML-Tabellen um neue Daten erweitern“ und schon werden alle neuen Datensätze unten an die Tabelle angehängt:
P.S. Die Lösung ist immer einfach. Man muss sie nur finden.
(Alexander Solschenizyn)
P.P.S. Das Problem sitzt meistens vor dem Computer.
Hallo Martin,
ich bin von deinen Beiträgen immer wieder begeistert. Oft kenne ich bereits einen Weg, du öffnest aber auch oft Kapitel auf, die ich noch nicht gelesen oder erlebt habe. Zudem gibt es wirklich immer mehrere Wege zum Ziel.
Vielen Dank, weiter so!
Hallo Géza,
vielen Dank für dein schönes Feedback und ich bin genau Deiner Meinung: Viele Wege führen nach Rom!
Schöne Grüße,
Martin
Hallo Martin,
bei meinem Excel (Office 2016) taucht nach dem Zuweisen der Zuordnung „Adressen“ zu Zelle „Vorname“ kein Eintrag „XML“ im Kontextmenü auf. Auch in den Entwicklertools enthält der Eintrag XML in den Ribbons lediglich den Button „Quelle“. Der öffnet/schließt aber lediglich das schon bekannte XML-Quelle-Dialog-Fenster. Muss die XML-Funktionalität womöglich noch irgendwo aktiviert werden?
Beste Grüße und danke für die vielen tollen Tipps,
BoRado
Hallo Bo,
wurde die Adressenliste durch die Zuordnung tatsächlich in eine formatierte Tabelle umgewandelt? Wenn nicht, wäre das ein Indiz dafür, dass die Zuordnung nicht geklappt hat.
Beim Öffnen der schema.xsd wird man gefragt, welcher Eintrag der Wurzelknoten sein soll: Adressen oder Adresszeile. Hattest Du hier vielleicht fälschlicherweise „Adresszeile“ ausgewählt?
Du könntest noch versuchen, jedes Element einzeln zuzuordnen. Also rechts aus der XML-Quelle das Feld Vorname nach links in die Tabelle auf das Feld Vorname ziehen usw. Dabei sollte jedesmal das betreffende Feld als formatierte Tabelle angezeigt werden.
Ansonsten fällt mir spontan auch nichts anderes ein. Die XML-Funktionalität muss meines Wissens nach nirgendwo explizit aktiviert werden.
Schöne Grüße,
Martin
Hallo Martin,
auch die wiederholte Zuordnung unter genauer Beachtung Deiner Hinweise – danke auch dafür – hat leider keine Veränderung herbeigeführt. Nach wie vor keine XML-Funktionalität in Kontextmenü oder Ribbons. Mal sehen, was die Suchmaschine mit den vielen „G’s“ und „O’s“ dazu sagt.
Beste Grüße,
BoRado
Excel-Version: Microsoft Office Professional Plus 2016
Hallo Martin,
mit Unterstützung von Luschi (Herber-Forum) hat zu guter letzt nur die komplette De- und Neuinstallation des Office Pakets geholfen, die XML-Funktionalität wieder herzustellen. Die Office-eigene Reparatur-Funktion hatte auch keine Wirkung. Anscheinend war das entsprechende Office-Modul dauerhaft abgeraucht.
Vielen Dank für Support und Tipps. Oft hilft das schon, um nicht zu früh genervt das Handtuch zu werfen… 😉
Beste Grüße,
Bo Rado
MS-Office Professional Plus 2016
Hallo Bo,
dass die Office-Installation zerschossen war, damit konnte natürlich keiner rechnen. Aber schön, dass Du noch Unterstützung gefunden hast und danke für die Rückmeldung.
Schöne Grüße,
Martin
Danke bin immer wieder begeistert über die informativen Beiträge!
Ich hätte eine Frage: Wenn man auf eine strukturierte Tabelle mit Namen ‚Adressen‘ zugreifen will, wie die obige mit der Spalte ‚Vorname‘.
Gibt es eine einfache Möglichkeit z.B. auf die 5. Zeile des Datenbereiches von Vorname zuzugreifen. Dabei würde ich gerne den Verweis mittels der strukturierten Methoden durchführen. Also in etwa so ‚=Adressen[[Vorname][#Daten]];Zeile5‘ (so geht es natürlich nicht!)
Gibt es so was?
Danke
Heinrich
Hallo Heinrich,
freut mich, wenn die Artikel nützlich sind.
Was Deine Frage zu den strukturierten Verweisen angeht, muss ich Dich leider enttäuschen. Die von Dir angedachte Möglichkeit gibt es leider nicht. Nur für Verweise auf Elemente in der gleichen Zeile gibt es einen strukturierten Verweis mit dem @-Symbol, z.B. [@Vorname].
Sobald ein Element in einer andere Zeile angesprochen werden soll, muss man leider auf normale Bezüge zurückgreifen.
Schöne Grüße,
Martin
Ist es noch immer so, dass ich über strukturierte Verweise keine Elemente in anderen Zeilen ansprechen kann?
Hallo Florian,
ja, es ist immer noch so. Mit strukturierten Verweisen lassen sich nur Elemente in der aktuellen Zeile oder oben komplette Spalten ansprechen. Einzelne Zellelemente in anderen Zeilen müssen mit normalen Zellbezügen angesprochen werden.
Schöne Grüße,
Martin
Eine andere Möglickeit bestünde darin, mit BEREICH.VERSCHIEBEN zu arbeiten, dann kann man auch Werte aus der vorherigen/nachfolgenden Zeile abfragen ohne den normalen Zellbezug zu nutzen.
Um auf eine bestmmte Zeile innerhalb der Tabelle zuzugreifen könnte man auch die INDEX-Funktion nutzen.
Hallo Martin!
Der Artikel hat mir extrem geholfen und stellt eine enorme Erleichterung dar!
Ich hätte aber eine Frage kann ich mit so einem Schema irgendwie folgende Form für die XML erzielen:
usw
Ich müsste teilweise ein paar Infos mehr pro Tag speichern, die ich aber immer das gleiche Schema haben. Also eine Art bezeichner.
Schon einmal vielen Dank!
Hallo nellybellyxd,
ich fürchte, bei Deinem Kommentar sind leider ein paar wesentliche Infos verloren gegangen…
(Bilder kannst Du selbst nicht anhängen, aber Du kannst mir eines per E-Mail zusenden und ich füge es ein)
Schöne Grüße,
Martin
Hallo Martin
Top Beitrag!!
Ich kann das gerade für ein Projekt sehr gut gebrauchen.
Klappt auch alles so wie es soll, bis auf eines 🙁
Ich würde gerne Zeilen und Spalten tauschen.
Also nicht von links nach rechts sondern von oben nach unten arbeiten. Aber Excel sagt ja logischerweise, wenn ich die zweite Zeile auswähle das die Spalte schon zugeordnet ist. Gibt es da eine Möglichkeit?
Gruß
Thomas
Hallo Thomas,
die Umwandlung in ein XML (und zurück) funktioniert nur mit einem „normalen“ Tabellenaufbau, also Spaltenüberschriften oben und alle Datensätze untereinander in je einer eigenen Zeile.
Schöne Grüße,
Martin
Hallo Martin,
ich kenne mich leider mit Excel und besonders XML kaum aus. Deswegen meine Frage:
Ist es möglich in einen XML Code bestimmte Zahlenwerte (die in einer Exeltabelle stehen) automatisiert zu verändern und abzuspeichern und wenn ja wie? Das Endergebniss soll immer wieder der selbe Code, in einer neuen XML-Date, mit geänderten einzelnen Werten sein.
Vielen Dank schon mal für die Antwort.
Liebe Grüße
Hallo Jonas,
du kannst mit den im Artikel gezeigten Mitteln XML-Dateien aus Excel-Dateien erstellen. Was damit nicht möglich ist, ist gezielt einzelne Werte in einer bestehenden XML-Datei damit zu verändern.
Schöne Grüße,
Martin
Hallo Martin,
habe Deine Excel-Tabelle erweitert durch weitere Spalten und diese dann in die xml-Datei engefügt.
Leider kommt dann folgende Fehlermeldung:
„Der Vorgang kann nicht ausgeführt werden, da das Ergebnis einen externen Datenbereich oder eine PivotTabelle überlappen würde.“
Woran kann das liegen?
Hallo Ulrich,
handelt es sich bei Deiner Tabelle vielleicht um eine Abfrage, die aus Power Query oder aus anderen externen Quellen kommt? Dann geht die Zuordnung nicht.
Schöne Grüße,
Martin
Hallo Martin,
da ich leider im Internet nichts zu meinem Fehler gefunden habe, beschreibe ich mein Problem nun hier. Vielleicht kannst du mir ja auf die Sprünge helfen.
Es geht um eine Zahlungsdatei (XML) die aus SAP generiert(exportiert) wird. Diese wollte ich nun anpassen. Zuerst habe ich diese Datei als Quelle genommen, dadurch wird sie als Schemadatei definiert (sowie ich es verstehe). Allerdings sind die Werte der Zahlungsdatei nun festgeschrieben und können nicht geändert werden.
Da ich nicht so schnell aufgeben wollte und der Meinung war das es evtl. eine XSD, die keine Werte enthält, geben muss. Kurze Zeit später bin ich bei github fündig geworden:
Dieses Schema habe ich dann in Excel als Quelle genommen. Ein Import unsere Zahlungsdatei hat funktioniert und zeitgleich aufgezeigt das nur ein Bruchteil der vorhandenen Elemente verwendet werden. Als nächstes habe ich die Daten angepasst und versucht diese in eine neue XML-Datei zu exportieren. Leider erfolglos:
„Die XML-Daten können nicht exportiert oder gespeichert werden. Die XML-Zuordnung in diesem Arbeitsblatt ist nicht exportierbar.“
Hast du evtl. eine Idee wodran der Export scheitert. Ich finde hierzu leider nichts.
Ich habe versucht die nicht genutzten Elemente zu entfernen und die dazugehörigen Spalten zu löschen. Dies hat leider auch nicht zum erfolgreichen exportieren geführt 🙁
Vielen Dank im Voraus
Grüße
Igor
PS: Folgende Hinweise werden ausgegeben wenn ich auf „XML-Zuordnungen zum Exportieren überprüfen…“ klicke:
*Name Arbeitsmappe* ist aufgrund des folgenden Inhalts nicht exportierbar:
– Liste aus Listen
– Denormalisierte Daten
– Eine zugeordnete Elementverbindung mit anderen Elementen kann nicht beibehalten werden
Hallo Igor,
die genannte Fehlermeldung sagt mir jetzt nichts, aber ich vermute, dass die Schema-Datei nicht zu deiner bereits importierten Zahlungsdatei passt. Stimmt die Reihenfolge deiner Tabellenfelder exakt mit der Reihenfolge in der Schema-Datei überein? Einen besseren Tipp kann ich dir leider nicht geben.
Schöne Grüße,
Martin
Hallo,
ich habe das Telefonbuch aus der FRITZ!Box in Excel importiert.
Sobald ich (auch ohne Änderung von Daten) in Excel auf „XML-Zuordnungen zum Exportieren überprüfen…“ klicke,
erhalte ich die gleiche Meldung wie „Igor Massold“:
————————————————–
*Name Arbeitsmappe* ist aufgrund des folgenden Inhalts nicht exportierbar:
– Liste aus Listen
– Denormalisierte Daten
– Eine zugeordnete Elementverbindung mit anderen Elementen kann nicht beibehalten werden
————————————————–
Ich habe dann die XML zur XSD konvertiert.
Aber auch hier kommt die gleiche Meldung.
Hier kann man sich meine XSD vom FRITZ!Box-Telefonbuch herunterladen:
https://c.web.de/@805356675996319896/9yZZA5cDSyGCM2N93NiEag
Vll. könnte da ein Experte mal drüber schauen.
Wäre total nett…
Viele Grüße
Matthias
P.S. Ich will vermeiden, dass ich alle Kontakte manuell ins FRITZ!Box-Telefonbuch eingeben muss.
Hallo Matthias,
ich habe mir die Datei heruntergeladen und ein wenig herumgespielt, komme aber leider auch auf kein Ergebnis…
Schöne Grüße,
Martin
Guck mal hier:
https://administrator.de/wissen/fritzbox-telefonbuch-xml-importdatei-excel-erstellen-502074.html#comment-1402720
Interessant!
Kann man auch geschachtelte XML damit verarbeiten?
Sagen wir eine Liste Kundenaufträgen, die Köpfe haben mit je 10 Feldern und jeder Kundenauftrag hätte 5 Positionen mit je 7 Feldern. Also 50 Positionen insgesamt.
Es ließe sich schwer in einer flachen Excel Liste darstellen.
Muss man dazu mehrere Tabs verwenden?
Und wie stellt man dann den Bezug zwischen Kopf und Positionen her?
Bin gespannt auf die Antwort.
Beim Export nach XML wird die Verknüpfung zur XML-Schema nicht mit exportiert. Bei einem erneuten Import der XML werden somit die Formate des XML-Schemas (z.B. Führende Nullen in einer Spalte) nicht eingehalten. Ist dies durch eine Option beim Export realisierbar oder funktioniert dies nicht?
Hallo Ron,
das XML-Schema wird in der ursprünglichen Excel-Datei mitgespeichert, aus der man die Daten nach XML importiert hat. Wenn die XML-Datei später wieder in diese Arbeitsmappe importiert wird, werden auch die Formate richtig angewendet.
Schöne Grüße,
Martin
Dieser Tip ist super, vielen Dank dafür. Da mein Problem ziemlich ähnlich war konnte ich 60% sofort nutzen.
Hallo Martin
Danke für die Anleitung. Zuerst hatte ich immer eine Fehlermedlung erhalten, als ich die xsd-Datei hinzufügen wollte. Grund dafür, ist die nicht vollständige Zeile 2 (wen man diese Zeile einrechnet: ).
In der Vorlage zum Download steht nur:
statt:
Im Anschluss hatte es geklappt.
xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema“
statt nur: xs:schema
Alles umgeben von spitzen Klammern, aber die sind rausgefallen.
Hallo Corinne,
vielen Dank für den Hinweis, ich habe die Download-Datei jetzt angepasst.
Schöne Grüße,
Martin
Ein guter Artikel, vor allem, da mir versichert wurde, in Excel könne keine XML Datei erzeugt werden. Jetzt gebe ich mich ans testen und bin gespannt, wie oft ich mich bei der Schema Datei vertippe ;-))
Danke für diese Hilfer
Hallo Leo,
das Einlesen von XML’s in Excel klappt in der Regel ganz gut. Lediglich beim Exportieren/Speichern von komplexen XML’s (also mit mehreren Unterebenen) stößt man an Grenzen.
Schöne Grüße,
Martin
Hallo Martin,
vielen Dank für diese detaillierte und gut nachvollziehbare Beschreibung. War genau das was ich gesucht habe. Eine verständliche Handlungsanweisung schreiben: Kann ich auch. Denken viele. Aber es verlangt Konzept und Struktur, sowie eine wohl überlegte zielgruppenorientierte Wortwahl. Würdest du Bücher schreiben zu den Themen die ich benötige, würde ich bei dir zuschlagen.
Hallo Senese,
vielen Dank für dieses tolle Feedback, bei soviel Lob werde ich gleich rot 🙂
Schöne Grüße,
Martin
Hallo Martin,
vielen Dank für Deine nützlichen Tipps und Tutorials, die mir schon oft geholfen haben. Mein Problem mit xml ist, dass ich eine bestehende Datei in einigen Spalten in Excel ergänzen möchte, mir Excel aber beim Import der xml und beim Export als xml die führenden Nullen verschluckt. Vor dem Imoprt ein jungfräuliches Blatt komplett als Text formatieren hat das Problem nicht gelöst. Alle Spalten einzeln mit Sonderformat formatieren (unterschiedliche Zeichenanzahl enthaltend), hat auch nicht geholfen. In notepad++ fehlen die Nullen nach dem Export wieder. Zahlenformatierung beibehalten ist unter Eigenschaften der xml-Zuordnung angehakt. Ich vermute, schon beim Import einen Fehler zu machen, denn die Daten stehen in der 5. Ebene und haben alle die Überschrift value(1 bis n).
Vielen Dank im Voraus für die Hilfe und Gruß
Simone
Hallo Simone,
ich habe auch immer wieder festgestellt, dass der XML-Import sehr zickig sein kann und man nur wenig bis gar keinen Einfluss auf das Ergebnis hat. Für dein Problem habe ich leider auch keine Lösung…
Schöne Grüße,
Martin
Hallo Martin,
bin bei der Suche nach dem Grund einer Fehlermeldung beim automatischen Export und erzeugen eines xml-Files auf Deine Seite hier gestoßen. Ich will den XML-Export per Makro anstoßen und habe dazu die Schritte die ich sonst manuell mache, also dass ich in der Entwicklungsumgebung auf „Exportieren“ klicke und dann den Dateinamen und den Pfad des xml-Files eingebe, per Makro aufgezeichnet. In dem Makro stehen dann komischerweise nur diese zwei Zeilen
ActiveWorkbook.XmlMaps(„Mod_Zuordnung“).Export Url:= _
„J:\Temp\Ra\Neuer Ordner\test.xml“
und wenn ich es dann per Button ausführen will, dann kommt die Fehlermeldung „Die Methode ‚Export‘ für das Objekt ‚XmlMap‘ ist fehlgeschlagen.
Eigentlich würde ich gerne einen bestimmten Dateinamen aus einer Zelle im Excel verwenden und der Pfad soll eigentlich auch der sein unter dem bereits das Excel-file gespeichert wurde, aber ich scheitere ja schon am ausführen des Makros. Wieso funktioniert es nur manuell ? Weißt Du da einen Grund ?
viele Grüße
Jürgen
Hallo Jürgen,
tut mir leid, XML und VBA habe ich in der Kombination selbst auch noch nie verwendet.
Schöne Grüße,
Martin
Hallo Martin
Danke für deine Beiträge!
Ich habe folgende Frage: bei einem Mac git es das Steuerelement „Quellen“ in den Entwicklertools nicht. Gibt es da einen alternativen Weg?
Vielen Dank für deine Hilfe
Hallo Anna,
was den Mac angeht, kann ich leider überhaupt nicht weiterhelfen, da ich keinen Mac besitze. Vielleicht weiß hier ein anderer Leser etwas dazu?
Schöne Grüße,
Martin
Hallo Martin,
Ich habe eine Frage ich möchte pro Zeile in deinem Beispiel pro Person eine XML nicht eine XML für alle Einträge ist das möglich? wen ja wie?
Vielen Dank für deine Antwort.
Hallo R,
das ist leider nicht möglich. Alles, was innerhalb einer Tabelle enthalten ist, wird in eine einzige XML-Datei gespeichert.
Schöne Grüße,
Martin
Hallo Martin,
ist es möglich in dem Schema das Ausgabeformat anzupassen? Aus dem Datum in Excel gibt er mir in der XML Datei eine Zahlenfolge, statt dem Datum aus.
Vielen Dank, dein Beitrag ist sehr hilfreich.
Ist es weiterhin möglich die Anzahl der ausgegebenen Dezimalstellen anzupassen?
Das Datumsproblem habe ich selbst beheben können, allerdings hängt es noch bei dem erzwingen von 2 Dezimalzahlen nach dem Komma.
Hallo Simon,
ich denke, das muss in der Schema-Datei definiert werden. Allerdings bin ich da auch nicht der Spezialist dafür und kann dir daher keinen konkreten Tipp geben.
Schöne Grüße,
Martin
Hallo Simon
Könntest du bitte deine Lösung mit dem Datumsproblem hier veröffentlichen. Dann können andere davon profitieren. Ich habe nämlich die gleiche Frage.
Vielen Dank dafür.
Peter
Hallo Martin,
Kompliment für Deine schöne Anleitung. Die hat mir prima geholfen.
Ich hänge nur noch an einem Punkt und glaube ich mache einen Anfängerfehler.
Vielleicht hast Du ja einen einfachen Tipp für mich oder kannst mich sagen, wo ich nach meinem Fehler suchen muss.
Ich habe das Exel-File erstellt, die xsd zugeordnet und den Spalten die Felder aus der Quelle (korrekt?) zugeordnet.
Bis dahin alles prima.
Leider wird aber nur die Zeile mit den Überschriften nach xml exportiert, nicht aber die Wertezeilen. Die erhalten wohl nicht das korrekte Format. Hast Du ’nen Tipp für mich, was ich falsch mache? Habe die Beiträge hier gelesen, aber so direkt hat mir keiner weitergeholfen.
Beste Grüße!
Uwe
Hallo Uwe,
wenn du wie oben im Artikel beschrieben die XML-Zuordnung auf deine Tabelle ziehst, dann müssten auch alle Wertezeilen in eine formatierte Tabelle umgewandelt werden. Wenn das der Fall ist, sollte es auch keine Probleme mit dem Export geben.
Falls nicht alle Wertezeilen in der formatierten Tabelle enthalten sind: Gibt es vielleicht zwischen der Überschriftenzeile und den Wertezeilen noch eine leere Zeile? Die müsste dann entfernt werden.
Eine andere Ursache fällt mir spontan nicht ein.
Schöne Grüße,
Martin
Hallo Martin,
es liegt an der Art und Weise, wie ich die Verknüpfung herstellen will.
In meinem neuesten Excel muss ich da einige Konventionen beachten, dann wird’s auch.
Ich bin jetzt einen Schritt weiter und denke, nun werde ich es hinkriegen.
Vielen Dank für den Input!
Uwe
Moin,
klasse erklärt.
Hat bei mir alles funktioniert und ich konnte es Problemlos zu meinem Anliegen transferieren.
Hi Matthias,
freut mich, danke für’s Feedback.
Schöne Grüße,
Martin
Hallo und Danke für Deinen hilfreichen Beitrag! Der hat mir Super geholfen, mehr die Thematik besser zu verstehen.
Das gezeigte Beispiel konnte ich problemlos nachvollziehen. Jetzt stehe ich vor der Aufgabe eine komplexe XML Struktur zu exportieren.
Ich konnte aus einer gelieferten XML eine XSD generieren und erfolgreich verbinden. Nur wird dabei die Struktur nicht in eine formatierte Tabelle umgewandelt und somit immer nur die erste Zeile exportiert.
Wo könnte hier denn das Problem liegen?
Hallo Steppo,
ich fürchte, es liegt daran, dass Excel ohnehin komplexe, verschachtelte XML-Strukturen nicht exportieren kann. Hier gibt es einen Beitrag von Microsoft:
https://support.microsoft.com/de-de/office/exportieren-von-xml-daten-0b21f51b-56d6-48f0-83d9-a89637cd4360
Schöne Grüße,
Martin
Hallo,
wirklich sehr guter Beitrag und für mich als Beginner genau richtig.
Eine Frage für mein bevorstehendes Projekt: wie könnte ich möglichst einfach, je ein xml-file je Excel bzw Tabellen Zeile (name, Adresse…) erzeugen?
Hallo Holger,
wie oben im Artikel beschrieben musst du über einen Texteditor eine Schema-Datei erzeugen. Das ist zwar umständlich, aber eine bessere Lösung habe ich leider auch nicht.
Schöne Grüße,
Martin
Hallo Martin,
erst einmal vielen Dank für diese super Anleitung. Ich komme auch bis zum letzten Schritt und bekomme dann bei Exportieren die Fehlermeldung:
Die XML-Daten können nicht exportiert oder gespeichert werden. die XML-Zuordnungen in diesem Arbeitsblatt sind nicht exportierbar.
Kannst du mir hier vielleicht auch helfen?
Besten Dank, Heike
Hallo Heike,
das Problem hatten weiter oben schon einige andere Leser auch geschrieben. Ich kann hier letztlich nur auf die Hilfeseite von Microsoft verweisen:
https://support.microsoft.com/de-de/office/exportieren-von-xml-daten-0b21f51b-56d6-48f0-83d9-a89637cd4360
Schöne Grüße,
Martin
Betreff Hierarchische Daten
Hallo Martin,
danke für die tollen Anweisungen. Hat alles funktioniert wie beschrieben. Ich will jedoch auch hierarchische Daten als XML speichern,
Jede Person kann 1, 2..n Telefonnummern haben. Dazu habe ich die Tabelle ergänzt um die Spalten Telefontyp (z.B. Festnetz, Mobil) und die Nummer selber.
Eine Person mit n Telefonnummern belegt auch n Zeilen in der Tabelle. Die XML sollte so in der Art aussehen
Habe eine XSD erstellt und bereitgestellt. Allerdings geht der Export nicht:
Die XML-Daten können nicht exportiert oder gespeichert werden. Die XML-Zuordnungen in diesem Arbeitsblatt sind nicht exportierbar.
Vielleicht geht es auch nicht, weil Excel ja nicht mitgeteilt bekommt Aufgrund welcher Kriterien die Daten gruppiert werden sollen.
Oder geht es doch und ich bin nur nicht in der Lage.
Vielen Dank
Sascha
Die in der Frage angegebene XML Struktur wurde nicht übernommen.
Jetzt nochmal ohne Spitzklammern
Adressen
Adresszeile
Name
Strasse
Telnummern
Telefon
Typ
Nummer
/Telefon
Telefon
Typ
Nummer
/Telefon
/Telnummern
Adresszeile
/Adressen
Hallo Sascha,
das Problem hatten schon andere Leser oben in den Kommentaren beschrieben, daher kann ich mich hier nur wiederholen: Excel kann meines Wissens nur flache XML-Strukturen exportieren. Sobald man hierarchische Strukturen hat, klappt es einfach nicht mehr.
Schöne Grüße,
Martin
Super Erklärt Danke für alles und hat super geklappt auch.
Eine Frage noch, ich mache mir einen Adressen Buch mit PHP und dazu brauch ich diese Tabelle in XML, die Frage ist ob ich dich noch fragen könnte wenn ich Probleme habe in PHP das wäre natürlich super.
beste grüße auch noch und das ganze Team.
Hallo Samuel,
freut mich, dass der Artikel weitergeholfen hat. Individuelle Unterstützung kann ich jedoch nicht bieten, das ganze Team besteht nur aus mir 😉
Schöne Grüße,
Martin
Hallo Martin,
zunächst auch von mir vielen Dank für die super Erklärungen. Das hat mir als Einsteiger sehr weitergeholfen.
Allerdings benötige ich noch eine Erweiterung in der exportierten XML-Datei aus Excel und hoffe, dass du mir dabei helfen kannst.
In der Schema-Datei wird ja zu Beginn u.a. die Version definiert. Ist es möglich, noch weitere Deklarationen zu ergänzen, die dann auch in der exportierten XML-Datei vorhanden sind? Konkret geht es darum, dass im Output der Pfad zu einer xsl-Datei angegeben werden muss. Das wäre dann die folgende Code-Zeile:
Diese wird leider nicht übernommen, obwohl es in der Schema-Datei enthalten ist.
Hast du eine Idee, wie die erwähnte Code-Zeile auch in der aus Excel exportieren XML-Datei enthalten sein kann?
Besten Dank und viele Grüße
Tobias
Leider ist die Code-Zeile nicht mitgekommen:
xml-stylesheet href=“TABLE_XML.xsl“ type=“text/xsl“
mit an Anfang bzw. Ende
Hallo Tobias,
das kann ich dir leider auch nicht beantworten, ich bin kein XML-Spezialist und weiß nicht, welche Elemente und XML-Strukturen hier erlaubt sind. Da hilft wohl nur ausprobieren.
Schöne Grüße,
Martin
Hallo Martin,
deine Beschreibung hat mit meinem Office 2016 funktioniert. Vielen Dank dafür. Das ist eine tolle Sache!
Eine Frage zum XML-Export: Ich habe ein Feld mit EUR-Betrag in meine Schemadatei aufgenommen. Obwohl die Daten in Excel als Zahlen im Format „0,00“ vorliegen und angezeigt werden, werden im XML-Export die Zahlen im Format „0.00“ bereitgestellt. Hast du eine Idee, wie das gesteuert wird und ob ich das beeinflussen kann? Der Schalter „Zahlenformatierung beibehalten“ im XML-Optionsmenü hat leider nichts bewirkt.
Vielen Dank!
Gruß Winfried
Hallo Winfried,
meines Wissens werden in einem xs:element Deziamlzahlen grundsätzlich mit dem Punkt als Dezimaltrenner dargestellt. Ob sich das irgendwie ändern lässt, kann ich mangels tiefergehender XML-Kenntnisse leider auch nicht beantworten.
Schöne Grüße,
Martin
Vielen Dank für eine detaillierte Anleitung!
Hallo Martin,
ich habe mit dem Script versucht, eine Exel Telefonbuch-Tabelle ins *xml Format zu bringen.
Es kommen aber Fehlermeldungen von Exel zu dem .xsd Skript.
Ich könnte 2 Screenshots per email schicken.
meine emailadresse s.u.
Wo kann ich die Screenshots hinschicken?
Grüße
Frank
Hallo Martin,
das hast du super erklärt.
Vielen Dank.
Franz
Dankeschön, freut mich zu hören!
Schöne Grüße,
Martin
Hallo Martin,
ist vielleicht schon mal gesagt/geschrieben worden, ich hatte es aber eben bei der Umsetzung Deiner Anleitung nicht beachtet:
Im Spaltenkopf der Ausgangstabelle auf „ÄÖÜäöüß… u.a. „Sonderzeichen“ verzichten.
Dann klappt es Super (wie immer).
Vielen Dank! Mach weiter so!
Beste Grüße
Michael
Hallo Michael,
vielen Dank für das nette Feedback und den Hinweis!
Schöne Grüße,
Martin
Lieber Herr Weiß,
herzlichen Dank für Ihre logischen und hilfreichen Darstellungen.
Haben Sie vielleicht noch einen Tipp für mich, wie muss ich Geburtsdaten im einem Schema anlegen, für eine XML Datei mit Geburtsdaten. Derzeit wird mir das Geburtsdatum im Browser nur als Nummer dagegenstellt.
Besten Dank im Voraus.
Hallo Frau Sigl,
gern geschehen. Was das Datumsformat angeht, würde ich auf die Seite https://www.w3schools.com/XML/schema_dtypes_date.asp verweisen.
Dort heißt es
<xs:element name=“start“ type=“xs:date“/>
Schöne Grüße,
Martin
Hallo Martin
Danke für das Tutorial. Ich habe es durchgeführt und es hat funktioniert 🙂
Ich möchte folgendes durchführen:
– Anhand des obigen Tutorials habe ich eine schema.xsd Datei erstellt
– aus meiner Applikation erstelle ich eine XML Daten Datei, die zur schema.xsd Datei passt
– und jetzt starte ich Excel aus meiner Applikation und übergebe die schema.xsd und die XML Datei
– Excel startet und zeigt mir die Daten aus der XML Datei an
Wichtig:
– Ich arbeite nur mit meiner Applikation und möchte nicht bei jedem Excel die XML Datei manuell importieren
– Das schema bleibt gleich, nur die Daten ändern sich laufend
Hast du eine Idee wie so ein Kommando auf der Kommandozeile aussehen kann?
Danke für dein Feedback.
Gruss, Marijan
Hallo Marijan,
ich fürchte, so etwas ist mit einer Kommandozeile nicht zu bewerkstelligen. Meine erste Idee wäre gewesen, die XML-Zuordnung in eine leere Arbeitsmappe zu laden und diese Arbeitsmappe dann als Arbeitsmappenvorlage mit dem Namen Mappe.xltx in das XLSTART-Verzeichnis zu legen. Damit wäre die XML-Zuordnung zumindest bei jeder neu erstellten Arbeitsmappe enthalten. Aber die XML-Datei aus der Applikation bekommt man damit trotzdem nicht automatisch importiert…
Tut mir leid, da habe ich auch keine Idee.
Schöne Grüße,
Martin
Schöne Grüße,
Martin
Hallo Marijan
Auch ich befasse mich seit längerem mit xml- | xml- Formate/Transformationen.
Zu Deinem Anliegen, xml/excel mit *xsd, habe ich vorerst in Google folgenden Suchbefel einegegeben:
import xml data with xsd
Nach dem ich die Trefferliste durchgeschaut habe, bin ich mir fast sicher dass Du damit weiterkommst.
Dies vorerst mein erster Gedanke. Werde selbst noch Testläufe machen, evtl. auch mit Power-Query?????
!!! …. Nicht vergessen, Der Verweis auf eine existierende *.xsd, kann in den Kopfdaten der *.xml-Datei eingefügt
werden…….!!!
Viele Grüsse karl_heg
import xml data with xsd
export xsd from excel
Hallo zusammen
Ja, wie Martin Weiß in der Eröffnung schon erwähnt hat, wird die *.xsd nicht mehr zurückgeliefert.
Schade, dass sich MS nicht leisten kann, sich an globalen Konformitäten anzupassen.
Nun, ich habe meine Testläufe gemacht. (Stylus Studio 2006 xml Enterprise und Excel Office 365)
Mit Excel „Entwicklertools / Quelle / Import / Export“, kann man immerhin einfache tabellarische Datenstrukturen *.xml
komfortabel editieren/modellieren. (importieren nach *.xsd-Schema, editieren / exportieren in Ursprungs- Datei *.xml).
Um Daten zu modellideren genügen oft 10 bis 50 Datensätze, um die entstehende Struktur herauszufinden.
Bsp: Strassen Nummer in Adresssdaten! Wer denkt bei der Modellierung schon daran, dass es die Nr. 11b auch gibt.
Soweit meine Testläufe. Es ist auch unverständlich, dass sich MS nicht leisten kann, führende Nullen mitzuliefern.
So bleibt nur eine rudimentäre Lösung in der Modellierung < 50 Datensätze, führende Nullen zu erzwingen indem man
007B schreibt und als Text formatiert.
mfg, karl_heg
Lieber Martin, you made my day 🙂
ich konnte tatsächlich im ganzen Netz nichts Vergleichbares zum Thema xml-Export mit Hilfe einer xsd-Datei finden und habe, dank deiner Anleitung, nun eine wirklich runde Lösung bauen können. Als weiteres Hilfsmittel, um bei vorhandener xml-Datei die xsd-Datei zu erzeugen, kann ich https://www.freeformatter.com/xsd-generator.html#before-output empfehlen.
Vielen Dank!
Hallo Alexander,
freut mich zu hören, dass du hier fündig geworden bist. Und danke für den Tipp mit dem XSD-Generator.
Schöne Grüße,
Martin
Hallo Martin,
ich habe dein Beispiel mit den downgeloadeten Dateien ausprobiert, „es tut“ (-:
Eins ist mir aber nicht klar: Ich war der Meinung, dass „.xsd“ die Dateinamenserweiterung der Schema-Datei ist; beim Download kam die Datei allerdings als „schema.xsd.xml“ an. Ist das so korrekt?
Hallo Christine,
du meinst die von mir bereitgestellte Schema-Datei? Die heißt bei mir auch schema.xsd
Warum die bei dir beim Download als schema.xsd.xml gespeichert wird, kann ich mir auch nicht erklären. Im Zweifelsfall kannst du die Datei ja anschließend umbenennen.
Schöne Grüße,
Martin
Vielen Dank für die gut aufbereiteten Hilfen zu den XML Formaten.
Danke für das tolle Feedback, es freut mich, wenn der Artikel weiterhilft.
Schöne Grüße,
Martin