Textfelder per Makro füllen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Textfelder per Makro füllen

Re: Textfelder per Makro füllen

von stoni » Sa, 29.03.2008 11:58

...danke hol.sten, das ist die Lösung gewesen. Ohne getEnd() funktioniert es wie gewollt :D

Re: Textfelder per Makro füllen

von hol.sten » Sa, 29.03.2008 11:29

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

von stoni » Sa, 29.03.2008 10:30

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

von komma4 » Sa, 29.03.2008 08:48

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?

Textfelder per Makro füllen

von stoni » Fr, 28.03.2008 23:03

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

Nach oben