Text einlesen und verarbeiten
Verfasst: Di, 06.10.2009 16:02
Hallo zusammen,
ich habe in unterschiedlichen Dokumenten Strings in der Form:
aaaaaa:bbbbb:ccccc:ddddd
Hierbei kann die Anzahl von Elementen, die durch einen Doppelpunkt getrennt werden variieren. Ziel ist es in einer Nachbearbeitung per Makro dafür zu sorgen, dass ausschliesslich die letzten beiden Elemente angezeigt werden. Es muss nicht nur ein String in dieser Form im Dokument auftreten, es können auch mehrere sein, die zeilenweise untereinander stehen.
Ich möchte also mit einem Makro genau den Punkt erwischen, wo die erste Zeile damit beginnt, diese einlesen, kleinhacken und als String wieder ausspucken, bei dem nur die letzten 2 Elemente getrennt von einem Doppelpunkt angezeigt werden. Danach möchte ich in die nächste Zeile, dort das gleiche machen und diesen Vorgang wiederholen bis es keinen String mehr mit dem angegebenen Muster gibt.
Nun habe ich überlegt, wie ich da am besten rankann. Ich kenne mich allerdings mit der ganzen Basic-Thematik noch nicht so gut aus, also...geht pfleglich mit mir um. *g*
Der erste Gedanke war, Textmarken in den Bereich einzurichten, in dem diese Strings vorkommen werden. Die nenne ich dann "START" und "ENDE" und kann damit in jedem Dokument die Strings an unterschiedlicher Stelle haben, aber dank der Marken immer korrekt finden.
Zur ersten Marke hinzuspringen war auch kein sonderlich großes Problem. Bisher sieht das so aus:
Jetzt bin ich bei der ersten Textmarke. Und nun? Ich habe gegoogled aber nichts gefunden, wie ich per Basic sagen kann "Lies den Inhalt der Zeile in eine Variable ein", damit ich den String isoliert in einer Variable habe und bearbeiten kann. Das Ergebnis würde ich dann vorerst an anderer Stelle wieder einfügen wollen und die originale Zeile löschen, damit am Anchor nun die nächste Zeile steht, die ich bearbeiten kann. Sind alle durch, würde ich dann die Ergebnisse von der temporären Stelle wieder an die originale Stelle kopieren wollen. Wenn das überhaupt geht, bzw. nicht irgendwas einfacherers gemacht werden kann.
Als ich nichts fand, habe ich nach alternativen Wegen gesucht und in der Variable "oDocument.text.string" den gesamten Text als einzelnen String gefunden. Dort könnte ich den Text wahrscheinlich auch bearbeiten, hätte aber nicht den Vorteil der Textmarken, sondern müsste eine Mustererkennung machen, die im Zweifel fehlschlägt, weil das Muster auch an Stellen erkannt werden könnte, wo es nicht verändert werden soll (Tippfehler, wenn jemand in einem Text zwei Wörter mit Doppelpunkt ohne Leerzeichen trennt bspw.). Bin ich mit dem String auf dem Holzweg, oder kann ich damit vielleicht sogar besser arbeiten, als mit der Idee oben?
Für Tipps und Hilfestellungen wäre ich unheimlich dankbar.
ich habe in unterschiedlichen Dokumenten Strings in der Form:
aaaaaa:bbbbb:ccccc:ddddd
Hierbei kann die Anzahl von Elementen, die durch einen Doppelpunkt getrennt werden variieren. Ziel ist es in einer Nachbearbeitung per Makro dafür zu sorgen, dass ausschliesslich die letzten beiden Elemente angezeigt werden. Es muss nicht nur ein String in dieser Form im Dokument auftreten, es können auch mehrere sein, die zeilenweise untereinander stehen.
Ich möchte also mit einem Makro genau den Punkt erwischen, wo die erste Zeile damit beginnt, diese einlesen, kleinhacken und als String wieder ausspucken, bei dem nur die letzten 2 Elemente getrennt von einem Doppelpunkt angezeigt werden. Danach möchte ich in die nächste Zeile, dort das gleiche machen und diesen Vorgang wiederholen bis es keinen String mehr mit dem angegebenen Muster gibt.
Nun habe ich überlegt, wie ich da am besten rankann. Ich kenne mich allerdings mit der ganzen Basic-Thematik noch nicht so gut aus, also...geht pfleglich mit mir um. *g*
Der erste Gedanke war, Textmarken in den Bereich einzurichten, in dem diese Strings vorkommen werden. Die nenne ich dann "START" und "ENDE" und kann damit in jedem Dokument die Strings an unterschiedlicher Stelle haben, aber dank der Marken immer korrekt finden.
Zur ersten Marke hinzuspringen war auch kein sonderlich großes Problem. Bisher sieht das so aus:
Code: Alles auswählen
dim oDocument, oBookmarks, oBookmark, oAnchor
oDocument = ThisComponent
oBookmarks = oDocument.getBookmarks
oBookmark = oBookmarks.getByName( "START" )
oAnchor = oBookmark.getAnchor
Als ich nichts fand, habe ich nach alternativen Wegen gesucht und in der Variable "oDocument.text.string" den gesamten Text als einzelnen String gefunden. Dort könnte ich den Text wahrscheinlich auch bearbeiten, hätte aber nicht den Vorteil der Textmarken, sondern müsste eine Mustererkennung machen, die im Zweifel fehlschlägt, weil das Muster auch an Stellen erkannt werden könnte, wo es nicht verändert werden soll (Tippfehler, wenn jemand in einem Text zwei Wörter mit Doppelpunkt ohne Leerzeichen trennt bspw.). Bin ich mit dem String auf dem Holzweg, oder kann ich damit vielleicht sogar besser arbeiten, als mit der Idee oben?
Für Tipps und Hilfestellungen wäre ich unheimlich dankbar.
