XML und Excel VBA

Hab dieses vorhin im Brett XML gepostet, aber es passt wohl doch besser hierher, also:

Es muss doch irgendwie in Excel VBA folgendes moeglich sein (und zwar ohne Stylesheets und Schemata

  1. Laden einer XML Daten
  2. Sich durch die Tags durch hangeln und einige davon aendern
  3. wieder als XML Datei speichern

Falls jemand hierzu ein einfaches Beispiel besitzt, waere ich dankbar.

Schoene Gruesse,
Manfred

Hi,

Es muss doch irgendwie in Excel VBA folgendes moeglich sein
(und zwar ohne Stylesheets und Schemata

Also Excel VBA als günstiges VB missbrauchen, ohne Excel selbst zu bemühen. Klar geht das.

Wie gut kennst Du Excel VBA? Kannst Du eine Userform erstellen und da einen Button einfügen?

  1. Laden einer XML Daten

kein Problem.

  1. Sich durch die Tags durch hangeln und einige davon aendern

Wenn Du weißt, wie die zu identifizieren sind, auch kein Problem. Wenn Du da ein paar Infos gibst, kann ich Code schreiben.

  1. wieder als XML Datei speichern

Ich kenne XML nicht. Ist das Klartext? Gibt es einen Header?
Wenn das nur Text ist, wie bei VBS, dann ist das kein Problem. Du musst nur verraten, wie Anfang und Ende der Tags markiert sind.

Gruß Rainer

Hallo Manfred,

suche mal nach MSXML VBA per Suchmaschine.

Du wirst sicherlich etwas finden. :smile:

Grüße
Thorsten

Bitte kein Stringvergleich!
Hallo Rainer,

bitte nicht per Stringvergleich die Werte aus dem XML ziehen. Dafür gibt es Parser, zum Beispiel MSXML, welcher auch problemlos in VBA eingebunden werden kann. Die MSDN beschreibt das Thema ausführlich.

Grüße
Thorsten

Hi Thorsten,

bitte nicht per Stringvergleich die Werte aus dem XML ziehen.
Dafür gibt es Parser, zum Beispiel MSXML, welcher auch
problemlos in VBA eingebunden werden kann. Die MSDN beschreibt
das Thema ausführlich.

OK, dann kann ich nicht helfen. Ich kenne mich weder mit VBA noch mit XML aus, ich kann nur VB. :smile:

Gruß Rainer

Hallo Rainer,

auch bei VB6 würde man den Weg über den MSXML oder einen anderen Parser gehen, der das Dokument in ein Objektmodell überführt. Bei VB.NET hast Du direkt die Möglichkeit mit XmlDocument / XPath zu arbeiten.

Grüße
Thorsten

Ja, das sehe ich genauso. Hab schon genuegend Parser geschrieben/angewendet in Delphi und will das ein in dem (bloeden) VBA schnell umgesetzt bekommen.

Danke, das sieht gut aus :smile:.
Muss aber wohl doch ne Stunde drauf verwenden :frowning:

Hallo Rainer,

Es muss doch irgendwie in Excel VBA folgendes moeglich sein
(und zwar ohne Stylesheets und Schemata

Also Excel VBA als günstiges VB missbrauchen, ohne Excel
selbst zu bemühen.

? das verstehe ich nun nicht, was meinst du damit?

Klar geht das.

Stimme ich mit meinem kärglichen Wissen zu xml zu.
Für mich ist eine xml eine reine Textdatei.
Stylesheets und Schemata sagt mir in diesem Zusammenhang rein gar nix.

Wenn da so Tags drin sind wie in Html seiten so kann man die m.E. durchaus mit VB/Vba laden = darstellen.
Mit regexp kann man einiges machen, auch mit Stringverleich.

Daß es da anscheinend MSxml-Editoren die analog zu html-Editoren
gut mit den tags umgehen können und möglicherweise sinnvoller sind wegen Schnelligkeit, Handling und so weiter ändert da ja nix dran.

Just my 2 Pfennige, ohne Ahnung ob ich Blödsinn geschrieben habe :smile:

Gruß
Reinhard

Hallo reinhard,

Es muss doch irgendwie in Excel VBA folgendes moeglich sein
(und zwar ohne Stylesheets und Schemata

Also Excel VBA als günstiges VB missbrauchen, ohne Excel
selbst zu bemühen.

? das verstehe ich nun nicht, was meinst du damit?

Ich meinte damit, daß keine Daten in eine Excel-Tabelle müssen. Mit Stringvergleich geht alles mit VB-Befehlen im Speicher.

Klar geht das.

Stimme ich mit meinem kärglichen Wissen zu xml zu.
Für mich ist eine xml eine reine Textdatei.

OK, da weißt Du schon mehr als ich. Ich habe noch keine XML-Dateio gesehen. :smile: Ich weiß noch nicht mal, wozu die gut ist.

Stylesheets und Schemata sagt mir in diesem Zusammenhang rein
gar nix.

Wenn da so Tags drin sind wie in Html seiten so kann man die
m.E. durchaus mit VB/Vba laden = darstellen.
Mit regexp kann man einiges machen, auch mit Stringverleich.

Ja, das hatte ich gemeint. Aber offensichtlich gibt es einen besseren Weg.

Daß es da anscheinend MSxml-Editoren die analog zu
html-Editoren
gut mit den tags umgehen können und möglicherweise sinnvoller
sind wegen Schnelligkeit, Handling und so weiter ändert da ja
nix dran.

Ich stimme Dir zu. :smile:

Gruß Rainer

Hallo,

um welches Excel handelt es sich denn? Die neueren Versionen basieren doch auf das Net Framework oder irre ich mich nun?
Wenn ich mich nicht irre, dann gibt es dazu fertige Klassen die man nur aufrufen muss :smile:

Mfg Alex

PS: @Rainer

XML Dateien werden oft als Config Files genutzt. Sprich Einstellungen für Programme werden da gerne abgelegt. Auch kann man in XML Files auch Daten anlegen, wie eine Art Datenbank :wink:

Hallo Rainer,

Also Excel VBA als günstiges VB missbrauchen, ohne Excel
selbst zu bemühen.

? das verstehe ich nun nicht, was meinst du damit?

Ich meinte damit, daß keine Daten in eine Excel-Tabelle
müssen. Mit Stringvergleich geht alles mit VB-Befehlen im
Speicher.

Ja, aber das geht doch auch genauso mit Vba.

Stimme ich mit meinem kärglichen Wissen zu xml zu.
Für mich ist eine xml eine reine Textdatei.

OK, da weißt Du schon mehr als ich. Ich habe noch keine
XML-Dateio gesehen. :smile: Ich weiß noch nicht mal, wozu die gut
ist.

Oha, ich bin da auf sehr dünnen Eis. Ich habe noch nicht im Internet recherchiert. Das ist nur eine Schlußfolgerung von dem was ich so in Excel-Foren mitlese/mitlas.
Ab Version Excel 2007 sind das obige zeugs in Excel was du anklicken kannst und da was auswählen keine Symolleisten mehr sondern sogenannte Ribbons.

Diese Ribbons wiederum sollen irgendwie xml-Dateien oder xml-Code sein.
Davon abgesehen habe ich noch das eine im Ohr was einer schrieb, da ging es um Passwortschutz für Exceldateien und wie man die umgeht.
Gibt da diverse Passwörter, weiß nicht mehr welches er meinte.
Jedenfalls sagte er sinngemäß, um bei diesen neuen Versionen ab 2007 die da irgendwie xml in sich haben ist es im Gegensatz zu früher viel einfacher da das Passwort zu knacken, er bräuchte dafür nur einen normalen Texteditor.

Da es in der damaligen Beitragsfolge um passwortsicherheit in Excel ging und viele profis mitgelesen haben muß es stimmen was er sagte.
Sonst hätte er Kontra bekommen.
Aus diesem folgere ich daß xml eine Txt-datei ist oder sein kann.

Wenn da so Tags drin sind wie in Html seiten so kann man die
m.E. durchaus mit VB/Vba laden = darstellen.
Mit regexp kann man einiges machen, auch mit Stringverleich.

Ja, das hatte ich gemeint. Aber offensichtlich gibt es einen
besseren Weg.

Nichts dagegen zu sagen den besseren Weg oder da dieses msxml zu benutzen. Aber wenn ich aus Lerngründen mich mal mit regexp an so einer xml austoben will so ist das auch sehr in Ordnung.

Daß es da anscheinend MSxml-Editoren die analog zu
html-Editoren
gut mit den tags umgehen können und möglicherweise sinnvoller
sind wegen Schnelligkeit, Handling und so weiter ändert da ja
nix dran.

Ich stimme Dir zu. :smile:

Sehr schön daß wir zwei Nichtsahnenden im xml-Bereich genauso denken.
Das läßt es leichter ertragen wenn vllt. hier einer schreibt, ihr habt doch Null Ahnung davon *lächel*

Gruß
Reinhard

Hallo Reinhard,

Ich meinte damit, daß keine Daten in eine Excel-Tabelle
müssen. Mit Stringvergleich geht alles mit VB-Befehlen im
Speicher.

Ja, aber das geht doch auch genauso mit Vba.

Ja sicher doch. Das ist aber nicht Excel-spezifisch, das läuft in jedem VB. Mit etwas Mühe sogar in VBS.

Stimme ich mit meinem kärglichen Wissen zu xml zu.
Für mich ist eine xml eine reine Textdatei.

OK, da weißt Du schon mehr als ich. Ich habe noch keine
XML-Dateio gesehen. :smile: Ich weiß noch nicht mal, wozu die gut
ist.

Oha, ich bin da auf sehr dünnen Eis. Ich habe noch nicht im
Internet recherchiert. Das ist nur eine Schlußfolgerung von
dem was ich so in Excel-Foren mitlese/mitlas.
Ab Version Excel 2007 sind das obige zeugs in Excel was du
anklicken kannst und da was auswählen keine Symolleisten mehr
sondern sogenannte Ribbons.

Diese Ribbons wiederum sollen irgendwie xml-Dateien oder
xml-Code sein.
Davon abgesehen habe ich noch das eine im Ohr was einer
schrieb, da ging es um Passwortschutz für Exceldateien und wie
man die umgeht.
Gibt da diverse Passwörter, weiß nicht mehr welches er meinte.
Jedenfalls sagte er sinngemäß, um bei diesen neuen Versionen
ab 2007 die da irgendwie xml in sich haben ist es im Gegensatz
zu früher viel einfacher da das Passwort zu knacken, er
bräuchte dafür nur einen normalen Texteditor.

Da es in der damaligen Beitragsfolge um passwortsicherheit in
Excel ging und viele profis mitgelesen haben muß es stimmen
was er sagte.
Sonst hätte er Kontra bekommen.
Aus diesem folgere ich daß xml eine Txt-datei ist oder sein
kann.

Wenn da so Tags drin sind wie in Html seiten so kann man die
m.E. durchaus mit VB/Vba laden = darstellen.
Mit regexp kann man einiges machen, auch mit Stringverleich.

Ja, das hatte ich gemeint. Aber offensichtlich gibt es einen
besseren Weg.

Nichts dagegen zu sagen den besseren Weg oder da dieses msxml
zu benutzen. Aber wenn ich aus Lerngründen mich mal mit regexp
an so einer xml austoben will so ist das auch sehr in Ordnung.

Ja, ganz bestimmt! Ich habe zu wenig Anwendungsfälle, um mich damit wirklich zu befassen. Bis ich das dann echt mal brauche, hab’ ich alles wieder vergessen. :smile:

Daß es da anscheinend MSxml-Editoren die analog zu
html-Editoren
gut mit den tags umgehen können und möglicherweise sinnvoller
sind wegen Schnelligkeit, Handling und so weiter ändert da ja
nix dran.

Ich stimme Dir zu. :smile:

Sehr schön daß wir zwei Nichtsahnenden im xml-Bereich genauso
denken.
Das läßt es leichter ertragen wenn vllt. hier einer schreibt,
ihr habt doch Null Ahnung davon *lächel*

Das stört mich nicht, ich hab’ ja wirklich keine Ahnung. Wenn der VB-Code nicht gebraucht wird, müssen wir ihn nicht schreiben und können uns anderen Themen widmen. Ich will ja immer noch Quicksort auf die Excel-Tabelle anwenden. :smile: Ich muss nur den Kopf frei bekommen.

Gruß Rainer

um welches Excel handelt es sich denn? Die neueren Versionen
basieren doch auf das Net Framework oder irre ich mich nun?
Wenn ich mich nicht irre, dann gibt es dazu fertige Klassen
die man nur aufrufen muss :smile:

Hallo Alex,

du irrst. Excel 2007 und Excel 2010 haben da dieses zeugs mit xml.
Aber im Internet ist zu lesen daß MS plant in Excel das Vba abzuschaffen und durch VB.Net zu ersetzen.

Aber glaub mal ja nicht daß du mit deinem .Net-Wissen dann
Probleme in Office-Programmen lösen könntest ohne dich in das jeweilige Programm einzulesen.
Du hast dann das gleiche Problem wie Rainer.

Du weißt nicht wie man da unterschiedliche Objekte/Elemente im Code „anspricht“.
Zum Beispiel, ich weiß du bist da in VB sehr fit, aber zeige mir mal Code den ich in Vb 5.0 testen kann, der aus allen aktuell geöffneten Excel- und Wordinstanzen die Namen all der Excelblätter und die namen der Worddateien auflistet.

Für mich wäre das eine sehr leichte Fingerübung wie Rainer zu sagen pflegt, für dich heißt das im Normalfall, also Vorahnung von Word und Excel, sehr Zeitaufwendiges Suchen im Internet…

Just my 2 Pfennige, schön daß du hier wieder mal schreibst :smile:

Gruß
Reinhard

Hallo Reinhard,

Hallo Alex,

du irrst. Excel 2007 und Excel 2010 haben da dieses zeugs mit
xml.

Was für Zeug mit XML hat Excel 2007 und 2010?

Aber im Internet ist zu lesen daß MS plant in Excel das Vba
abzuschaffen und durch VB.Net zu ersetzen.

Genau darauf wollte ich hinaus. Wenn das an dem ist, dann basiert alles auf das .Net Framework und dann ist das auslesen von XML Files absolut kein Problem mehr :smile:

Aber glaub mal ja nicht daß du mit deinem .Net-Wissen dann
Probleme in Office-Programmen lösen könntest ohne dich in das
jeweilige Programm einzulesen.

Das habe ich nie behauptet! Ging es hier nicht schlichtweg darum wie man ein XML File ausliest? Sofern man die Möglichkeit hat dabei auf das .Net Framework zuzugreifen, ist das kein Problem. Egal ob nun unter C++, VB.Net oder VBA(wenn es denn das .Net Framework unterstützen wuerde).
Auch muss ich dazu nicht das komplette Office verstehen Reinhard. Es reicht dann letztendlich aus zu wissen welche Prozedure man abzapfen muss. Sicher ist es richtig das man sich der Problematik die man versucht zu lösen erst einmal auseinander setzen muss. Bestes Bsp. ein Chat! Geht sicher auch unter Excel … Koenntest du es oder müsstest du dich da auch erst einarbeiten?

Du hast dann das gleiche Problem wie Rainer.

Du weißt nicht wie man da unterschiedliche Objekte/Elemente im
Code „anspricht“.

Ist eine Declaration einer Variablen unter VBA nicht gleich der unter VB? Genauso wird es dann mit .Net sein!
Sicher weiss ich nicht was eine Range(Bereich, ok koennte ein Zellbereich sein) ist oder wie ich eine Zeile makiere. Aber dazu gibt es den Object Browser, ich kann Macros aufzeichnen und mir es dann anschauen oder ansonsten Foren.

Zum Beispiel, ich weiß du bist da in VB sehr fit, aber zeige
mir mal Code den ich in Vb 5.0 testen kann, der aus allen
aktuell geöffneten Excel- und Wordinstanzen die Namen all der
Excelblätter und die namen der Worddateien auflistet.

Ich denke mal das ich das hin bekommen würde. Es ist nur eine Frage der Zeit und ob es dann optimal gelöst ist, bezweifle ich. Aber koenntest du mir einen Source anbieten der mal eben schnell den MBR auslesen tut oder die Firewall für ein Program frei schaltet oder gar ein Program unter Admin Rechten ausführt, wenn man als Gast angemeldet ist?
Adhock würdest du dies sicherlich auch nicht hinbekommen und muesstest probieren.

Für mich wäre das eine sehr leichte Fingerübung wie Rainer zu
sagen pflegt, für dich heißt das im Normalfall, also Vorahnung
von Word und Excel, sehr Zeitaufwendiges Suchen im Internet…

Just my 2 Pfennige, schön daß du hier wieder mal schreibst :smile:

Was ich hier nur nicht verstehe ist, worauf du hinaus willst? Der Ursprungsposter (Manfred) wollte lediglich wissen, wie man ein XML File ausliest, die Tags ausliest und wieder schreibt. Würde nun VBA das Framework unterstützen, haette man schreiben koennen, du schau Dir mal die Klassen System.XML an und dabei speziell XmlTextWriter und XmlReader. Wo ist da nun das Problem und wozu muss ich mich da in Office genau auskennen? Das was ich wissen muss und nicht weiss kann ich vorher nachfragen, wie ich es gemacht habe.

Gruß
Reinhard

MfG Alex