Seite 1 von 1
Textfelder per Makro füllen
Verfasst: Fr, 28.03.2008 23:03
von stoni
Hallo Leute,
bin völliger Neuling in der OOo Basic Programmierung und hoffe, ihr könnt mir helfen.
Ich möchte Textfelder, die ich in einer (Writer-)Vorlagendatei definiert habe, per Makro beim Aufruf befüllen lassen. Die Daten kommen aus einem Textfile. Ich habe schon mit Bookmarks experimentiert, aber da werden die Daten bei jedem Aufruf des Dokuments neu angehängt anstatt sie zu ersetzen. Bei den Textfeldern weiß ich nicht, wie ich sie ansprechen muss, damit der Inhalt eingefügt wird.
Danke schon mal für Hilfe!
Gruß
stoni
Re: Textfelder per Makro füllen
Verfasst: Sa, 29.03.2008 08:48
von komma4
stoni,
zeigst Du uns Code?
Wie hast Du Dein Makro aufgerufen?
Die Inhalte sollen nach Erstellung aus der Vorlage einmalig gefüllt werden?
Oder möchtest Du -nach einem neuen Aufruf- die Werte aktualisieren (die Quell-Textdatei ändert sich?)
Andrews Makro-Dokument kennst Du?
Re: Textfelder per Makro füllen
Verfasst: Sa, 29.03.2008 10:30
von stoni
Hallo komma4,
"zeigst Du uns Code?"
Code: Alles auswählen
sub AngebotAusfuellen(Nummer As String, Anrede As String, Anschrift As String, Strasse As String, _
Land As String, PLZ As String, Ort As String)
Dim oDoc as Object, oBookmark as Object
Dim oCur as Object
oDoc = thisComponent
oBookmark = oDoc.getBookmarks().getByName( "Anschrift" )
oCur = oDoc.Text.createTextCursorbyRange(oBookmark.getAnchor().getEnd())
oCur.string = Anschrift
oBookmark = oDoc.getBookmarks().getByName( "Strasse" )
oCur = oDoc.Text.createTextCursorbyRange(oBookmark.getAnchor().getEnd())
oCur.string = Strasse
oBookmark = oDoc.getBookmarks().getByName( "PLZ" )
oCur = oDoc.Text.createTextCursorbyRange(oBookmark.getAnchor().getEnd())
oCur.string = PLZ
oBookmark = oDoc.getBookmarks().getByName( "Ort" )
oCur = oDoc.Text.createTextCursorbyRange(oBookmark.getAnchor().getEnd())
oCur.string = Ort
end sub
"Wie hast Du Dein Makro aufgerufen?"
Im moment noch manuell gestartet - soll aber mal beim Aufrufen des Dokuments ausgeführt werden
"Die Inhalte sollen nach Erstellung aus der Vorlage einmalig gefüllt werden?
Oder möchtest Du -nach einem neuen Aufruf- die Werte aktualisieren (die Quell-Textdatei ändert sich?)"
Letzteres. Die Quelldatei kann sich ändern. Deshalb sollen bei jedem Aufruf des Dokuments die Werte aktualisiert werden. Mit den Bookmarks funktioniert das aber nicht... Ich habe bisher nur Beispielcode gefunden, bei denen die Textfelder per Code erstellt werden, aber nicht, wie man vorhandene Textfelder dynamisch füllen/aktualisieren kann.
"Andrews Makro-Dokument kennst Du?"
Bis jetzt noch nicht - danke für den Tipp.
Re: Textfelder per Makro füllen
Verfasst: Sa, 29.03.2008 11:29
von hol.sten
stoni hat geschrieben:Ich habe schon mit Bookmarks experimentiert, aber da werden die Daten bei jedem Aufruf des Dokuments neu angehängt anstatt sie zu ersetzen.
Hierzu zwei Fragen:
1) Wie fügst du die Bookmarks in dein Dokument ein?
2) Warum benutzt du in deinem OOo Basic Code ".getEnd()"?
Ich mache folgendes:
1) Ich füge an der Stelle, an der ich ein Bookmark benötige, zunächst ein Leerzeichen ein, markiere dieses dann und rufe anschließend für das markierte Leerzeichen "Insert" > "Bookmark" auf.
2) In OOo Basic schreibe ich nur:
Code: Alles auswählen
...
oBookmark = oDoc.getBookmarks().getByName( "Strasse" )
oCur = oDoc.Text.createTextCursorbyRange(oBookmark.getAnchor())
oCur.string = Strasse
...
Also ohne ".getEnd()". Wenn ich das Makro jetzt mehrfach mit unterschiedlichen Parametern aufrufe, ändert sich der Inhalt der Bookmarks und wird nicht jedes Mal ans Ende angehängt.
Ein Problem kann aber mit meiner Platzierung der Bookmarks auftreten: Wenn in einer Zeile zwei Bookmarks stehen sollen, sollte zwischen den beiden Bookmarks irgendein beliebiges Zeichen stehen (auch ein Leerzeichen ist ok). Wenn zwei Bookmarks direkt nebeneinander stehen, kann OOo beim Befüllen der Bookmarks durcheinander kommen. Ich spreche hier von "kann", weil mich OOo seit 1.1.2 damit gequält hat. Bei meinem heutigen Test mit OOo 2.4.0 scheint es dieses Problem nicht mehr zu geben. Bei OOo 2.0.x gab es das Problem auch noch. Irgendwo dazwischen ist es wohl behoben worden.
Re: Textfelder per Makro füllen
Verfasst: Sa, 29.03.2008 11:58
von stoni
...danke hol.sten, das ist die Lösung gewesen. Ohne getEnd() funktioniert es wie gewollt
