Textmarken in Writer-Vorlage "festnageln"
Moderator: Moderatoren
-
- Beiträge: 7
- Registriert: So, 27.06.2010 15:09
Textmarken in Writer-Vorlage "festnageln"
Hallo Experten,
ich hoffe, Ihr könnt' mir bei meinem Problem helfen.
"Einleitung"
Ich möchte ein Programm verwenden, das eine Writer-Vorlage mittels Textmarken mit Daten aus einer auf MySQL basierenden Datenbank befüllt. Das Programm läuft ganz gut.
Das Problem ist, dass meine bisherige Writer-Vorlage Rahmen und Tabellen enthält, mit denen die Textinhalte "festgenagelt" werden. Damit kommt das Programm nicht klar (Exception "Schlag-mich-tot"); es kann nur an Textmarken im Textfeld der Seite einfügen. Hier gibt es ein vergleichbares Problemhttp://www.oooforum.de/viewtopic.php?f=18&t=5573. Da mir die Programmierkenntnisse fehlen, kann ich das Problem nicht ( in angemessener Zeit) lösen.
"Zum Kern"
Nun würde ich das Problem gern umgehen, indem ich die Writer-Vorlage einfach so umgestalte, dass die Textmarken auf dem Textfeld der Seite landen.
Leider verrutschen die Textmarken immer wieder; überhaupt kann man kaum erkennen, wo sich die Textmarken befinden. Kann man die nicht irgendwie "befestigen" ?
Falls mir da jemand weiterhelfen könnte, wäre ich sehr dankbar.
Gruß
Ein Ganther
ich hoffe, Ihr könnt' mir bei meinem Problem helfen.
"Einleitung"
Ich möchte ein Programm verwenden, das eine Writer-Vorlage mittels Textmarken mit Daten aus einer auf MySQL basierenden Datenbank befüllt. Das Programm läuft ganz gut.
Das Problem ist, dass meine bisherige Writer-Vorlage Rahmen und Tabellen enthält, mit denen die Textinhalte "festgenagelt" werden. Damit kommt das Programm nicht klar (Exception "Schlag-mich-tot"); es kann nur an Textmarken im Textfeld der Seite einfügen. Hier gibt es ein vergleichbares Problemhttp://www.oooforum.de/viewtopic.php?f=18&t=5573. Da mir die Programmierkenntnisse fehlen, kann ich das Problem nicht ( in angemessener Zeit) lösen.
"Zum Kern"
Nun würde ich das Problem gern umgehen, indem ich die Writer-Vorlage einfach so umgestalte, dass die Textmarken auf dem Textfeld der Seite landen.
Leider verrutschen die Textmarken immer wieder; überhaupt kann man kaum erkennen, wo sich die Textmarken befinden. Kann man die nicht irgendwie "befestigen" ?
Falls mir da jemand weiterhelfen könnte, wäre ich sehr dankbar.
Gruß
Ein Ganther
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Textmarken in Writer-Vorlage "festnageln"
Willkommen im Forum.
Dein "Programm" ist eine BASIC-Anwendung, richtig?
Zum Einfügen wird da jedenfalls ein CURSOR verwendet - und der muss innerhalb Rahmen und Texttabellen anders erzeugt werden, als im Fliesstext.
Ansonsten: Textmarken befinden sich da, wo sie festgelegt werden - die brauchen nicht gesondert "festgenagelt" zu werden.
Vielleicht lädst Du mal eine Beispieldatei (anonymisierte Daten!) hoch... und erzählst uns ein bisschen mehr von Deinem Programm.
Dein "Programm" ist eine BASIC-Anwendung, richtig?
Zum Einfügen wird da jedenfalls ein CURSOR verwendet - und der muss innerhalb Rahmen und Texttabellen anders erzeugt werden, als im Fliesstext.
Ansonsten: Textmarken befinden sich da, wo sie festgelegt werden - die brauchen nicht gesondert "festgenagelt" zu werden.
Vielleicht lädst Du mal eine Beispieldatei (anonymisierte Daten!) hoch... und erzählst uns ein bisschen mehr von Deinem Programm.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
-
- Beiträge: 7
- Registriert: So, 27.06.2010 15:09
Re: Textmarken in Writer-Vorlage "festnageln"
Hallo Komma4,
Gruß
Ganther
ja, es handelt sich um eine StarBasic-Anwendung, nämlich um diese hier: http://www.canzeley.de/ Es ist selbstverständlich nicht "meins";). Nach der Lizenz dürfte ich zwar den Code verändern aber ich habe davon keine Ahnung und die Änderungen wären sicher etwas umfangreicher.Dein "Programm" ist eine BASIC-Anwendung, richtig?
Das habe ich dann schonmal einigermaßen richtig verstanden.Zum Einfügen wird da jedenfalls ein CURSOR verwendet - und der muss innerhalb Rahmen und Texttabellen anders erzeugt werden, als im Fliesstext.
Ich habe mal das hochgeladen, was von meiner ursprünglichen Vorlage noch über ist. Die erste Textmarke ist eine Adresse - das klappt auch. Aber die anderen sollen da unter dem Balken auftauchen; nur durch das Einfügen der ersten Textmarke verschiebt sich natürlich alles; bzw. zum Teil kann ich da auch einfach keine Textmarke setzen?Vielleicht lädst Du mal eine Beispieldatei (anonymisierte Daten!) hoch
Gruß
Ganther
-
- Beiträge: 7
- Registriert: So, 27.06.2010 15:09
Re: Textmarken in Writer-Vorlage "festnageln"
Zu dem ursprünglichen Problem:
die besagte Fehlermeldung (Exception).
Man müsste hier sicher so etwas schreiben, wie "setze Cursor in Tabelle 'xy'( und danach in Tabelle 'xyz')"
Aber wahrscheinlich wird man noch an anderen Stellen Änderungen vornehmen müssen bzw. manche Textmarken sind im Fließtext ja auch richtig aufgehoben. Da müßte dann etwas auftauchen im Sinne von:" Wenn im Fließtext nicht gefunden, dann versuche es in der Tabelle."
..geht leider etwas über meine Fähigkeiten hinaus...
aber vielleicht bekomme ich ja die Light-Lösung hin. 
Gruß
Ganther
Da kommt hier ( beim Sternchen)Zum Einfügen wird da jedenfalls ein CURSOR verwendet - und der muss innerhalb Rahmen und Texttabellen anders erzeugt werden, als im Fliesstext.
Code: Alles auswählen
Sub TextmarkeStringZuordnen
If oDoc.getBookmarks().hasByName(sTextmarkeName) = True Then
oTextmarke = oDoc.getBookmarks().getByName(sTextmarkeName)
oCursor = oDoc.Text.createTextCursorByRange(oTextmarke.Anchor) <-------*
oCursor.String = sTextmarkeString
End If
End Sub
Man müsste hier sicher so etwas schreiben, wie "setze Cursor in Tabelle 'xy'( und danach in Tabelle 'xyz')"
Aber wahrscheinlich wird man noch an anderen Stellen Änderungen vornehmen müssen bzw. manche Textmarken sind im Fließtext ja auch richtig aufgehoben. Da müßte dann etwas auftauchen im Sinne von:" Wenn im Fließtext nicht gefunden, dann versuche es in der Tabelle."
..geht leider etwas über meine Fähigkeiten hinaus...


Gruß
Ganther
Re: Textmarken in Writer-Vorlage "festnageln"
Hi Ganther,
Textmarken in Tabellen müssen anders angesprochen werden als "normale" Textmarken!
Viel Erfolg.
Jürgen
Textmarken in Tabellen müssen anders angesprochen werden als "normale" Textmarken!
Viel Erfolg.
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
-
- Beiträge: 7
- Registriert: So, 27.06.2010 15:09
Re: Textmarken in Writer-Vorlage "festnageln"
Erstmal vielen Dank dafür. Jetzt könnte es fast klappen.turtle47 hat geschrieben:Hi Ganther,
Textmarken in Tabellen müssen anders angesprochen werden als "normale" Textmarken!
Viel Erfolg.
Jürgen
Also, ich habe jetzt mal versucht, den verlinkten Code zu verbasteln:
Code: Alles auswählen
(zT auch In der "Ober-Sub" einsortiert; Ort scheint aber nicht so wichtig:
Dim TextTables As Object
Dim Table As Object)
Sub TextmarkeStringZuordnen
Dim Texttables as variant
TextTables = oDoc.getTextTables()
Zahl = TextTables.count() <--------------*
for TabellenZaehler = 1 to (Zahl - 1)
Table = TextTables(TabellenZaehler)
on error goto Fehler
If oDoc.getBookmarks().hasByName(sTextmarkeName) = True Then
oTextmarke = oDoc.getBookmarks().getByName(sTextmarkeName)
oCursor = oDoc.Text.createTextCursorByRange(oTextmarke.Anchor)
oCursor.String = sTextmarkeString
End If
Next TabellenZaehler
exit Sub
Fehler:
Msgbox "Es wurde kein entsprechender Bookmark gefunden"
End Sub
Gruß
Ganther
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Textmarken in Writer-Vorlage "festnageln"
Ich sage hier mal, Dein Dokument enthält keine Texttabellen... vielleicht "nur" Rahmen?
Untersuche Deine Objekte (oDoc, TextTables) mit X-Ray
Anmerkungen:
* prüfe in der Unterroutine ZUERST, ob die BOOKMARK vorhanden ist-wenn nicht: Exit Sub
* Dein Zähler startet mit 1. Arrays in OOo sind NULL-basiert, schleife also von 0 To TabellenZaehler-1 (es sei denn, Du möchtest die erste Texttabelle nicht bearbeiten
Versuche Dich mal an Folgendem (aus meiner Krabbelkiste) - ersetze den Namen der Textmarke!:
Hilft das weiter?
Untersuche Deine Objekte (oDoc, TextTables) mit X-Ray
Anmerkungen:
* prüfe in der Unterroutine ZUERST, ob die BOOKMARK vorhanden ist-wenn nicht: Exit Sub
* Dein Zähler startet mit 1. Arrays in OOo sind NULL-basiert, schleife also von 0 To TabellenZaehler-1 (es sei denn, Du möchtest die erste Texttabelle nicht bearbeiten

Versuche Dich mal an Folgendem (aus meiner Krabbelkiste) - ersetze den Namen der Textmarke!:
Code: Alles auswählen
oDok = ThisComponent
' Textmarke
oBM = oDok.getBookmarks().getByName("replaceMe_BM")
print oBM.getAnchor.getText() '
oBM.getAnchor.setString = "neuer Inhalt"
Hilft das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
-
- Beiträge: 7
- Registriert: So, 27.06.2010 15:09
Re: Textmarken in Writer-Vorlage "festnageln"
komma4 hat geschrieben:Ich sage hier mal, Dein Dokument enthält keine Texttabellen... vielleicht "nur" Rahmen?
Okay, ich sage jetzt mal, es sind Rahmen, weil die Dinger Rahmen1 und Rahmen2 heißen. An den anderen Tipps habe ich mir erstmal die Zähne ausgebissen.
Den Code habe ich jetzt so verändert (Texttabelles durch Frames ersetzt):
Code: Alles auswählen
Dim textFrame As Object
Dim Table As Object
Sub TextmarkeStringZuordnen
Dim textFrames as variant
textFrames = oDoc.gettextFrame()
Zahl = textFrame.count()
for TabellenZaehler = 0 to Zahl-1 <-----------------* Fehler: Basic-Laufzeitfehler. Variable nicht definiert
Table = textFrame(TabellenZaehler)
on error goto Fehler
If oDoc.getBookmarks().hasByName(sTextmarkeName) = True Then
oTextmarke = oDoc.getBookmarks().getByName(sTextmarkeName)
oCursor = oDoc.Text.createTextCursorByRange(oTextmarke.Anchor)
oCursor.String = sTextmarkeString
End If
Next TabellenZaehler
exit Sub
Fehler:
Msgbox "Es wurde kein entsprechender Bookmark gefunden"
End Sub
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Textmarken in Writer-Vorlage "festnageln"
Du schreibst den Code hier (neu) rein - kopierst ihn nicht?
Folgendes läuft bei mir ohne Fehlermeldung
Folgendes läuft bei mir ohne Fehlermeldung
Code: Alles auswählen
Sub de39680
oDoc= ThisComponent
textFrames = oDoc.gettextFrames()
Zahl = textFrames.count()
for TabellenZaehler = 0 to Zahl-1
Table = textFrames(TabellenZaehler)
print Table.name
next
End Sub
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
-
- Beiträge: 7
- Registriert: So, 27.06.2010 15:09
Re: Textmarken in Writer-Vorlage "festnageln"
Nein, ich kopiere ihn schon aus dem "Basic-Fenster" (heißt bestimmt anders). (Den Code bastele ich in 'ner odt.-Datei und kopiere ihn dann ins "Basic-Fenster..)komma4 hat geschrieben:Du schreibst den Code hier (neu) rein - kopierst ihn nicht?
Wenn ich das reinkopiere, stört sich der Computer daran auch nicht.Folgendes läuft bei mir ohne FehlermeldungCode: Alles auswählen
Sub de39680 oDoc= ThisComponent textFrames = oDoc.gettextFrames() Zahl = textFrames.count() for TabellenZaehler = 0 to Zahl-1 Table = textFrames(TabellenZaehler) print Table.name next End Sub
Im folgenden "Zusammenbau" bleibt es aber bei dem besagten Fehler; wenn "textFrames = oDoc.gettextFrame()" - also nicht im Plural - dann kommt in dieser Zeile aber die Meldung ..Laufzeitfehler Eigenschaft oder Methode nicht gefunden.
Code: Alles auswählen
Dim textFrame As Object
Dim Table As Object
Sub TextmarkeStringZuordnen
Dim textFrames as variant
oDoc = ThisComponent
textFrames = oDoc.gettextFrame()
Zahl = textFrame.count()
for TabellenZaehler = 0 to Zahl-1
Table = textFrame(TabellenZaehler)
print Table.name
on error goto Fehler
If oDoc.getBookmarks().hasByName(sTextmarkeName) = True Then
oTextmarke = oDoc.getBookmarks().getByName(sTextmarkeName)
oCursor = oDoc.Text.createTextCursorByRange(oTextmarke.Anchor)
oCursor.String = sTextmarkeString
End If
Next TabellenZaehler
exit Sub
Fehler:
Msgbox "Es wurde kein entsprechender Bookmark gefunden"
End Sub

Re: Textmarken in Writer-Vorlage "festnageln"
Hallo Fuchsfrager,
über eins kann man ja nicht meckern. Du hast ne enorme Geduld.
Beigefügt mal eine Dokumentvorlage zum beschreiben von Textmarken innerhalb von Tabellen und Rahmen.
Du brauchst nur innerhalb der beiden Subs die entsprechenden Werte einzutragen, den Rest übernehmen die Functionen.
Vielleicht hilft Dir das weiter.
Jürgen
über eins kann man ja nicht meckern. Du hast ne enorme Geduld.
Beigefügt mal eine Dokumentvorlage zum beschreiben von Textmarken innerhalb von Tabellen und Rahmen.
Du brauchst nur innerhalb der beiden Subs die entsprechenden Werte einzutragen, den Rest übernehmen die Functionen.
Vielleicht hilft Dir das weiter.
Jürgen
- Dateianhänge
-
- Textmarke Tabellen Rahmen.ott
- (12.88 KiB) 67-mal heruntergeladen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Textmarken in Writer-Vorlage "festnageln"
Das liegt bestimmt daran, dass die Methode nicht definiert istIch_frag'_den_Fuchs hat geschrieben:Im folgenden "Zusammenbau" bleibt es aber bei dem besagten Fehler; wenn "textFrames = oDoc.gettextFrame()" - also nicht im Plural - dann kommt in dieser Zeile aber die Meldung ..Laufzeitfehler Eigenschaft oder Methode nicht gefunden.

Lese mal: API-Dokumentation
Hoffentlich kommst Du mit Jürgens Beispiel weiter!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
-
- Beiträge: 7
- Registriert: So, 27.06.2010 15:09
Re: Textmarken in Writer-Vorlage "festnageln"
Okay, damit (+ Google) ist heute Morgen* ein dicker Groschen durch die Dachrinne gerauscht.komma4 hat geschrieben:
Das liegt bestimmt daran, dass die Methode nicht definiert ist
Ganz oben im Code steht nämlich "Option Explicit" und darunter sind einige "Variabeln" mit Private festgelegt. Nehme ich das "Open Explicit" raus, so laufen die meisten Sachen auch ( Man kann sich ja als Ahnungsloser gar nicht vorstellen, dass so etwas dazu führen soll, dass Änderungen nicht "gefressen" werden). Ich habe jetzt mal den Code von Jürgens Vorlage eingebaut.
Scheint bisher alles zu klappen; weiß jetzt nur nicht, ob das Rausnehmen oben auch negative Auswirkungen hat.
Also, erstmal vielen vielen Dank Euch beiden!!!

*(neue Rechtschreibung sieht wieder komisch aus)
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Textmarken in Writer-Vorlage "festnageln"
Ich_frag'_den_Fuchs hat geschrieben:Ganz oben im Code steht nämlich "Option Explicit" und darunter sind einige "Variabeln" mit Private festgelegt.
[Hervorhebung durch mich]F1 Online-Hilfe Basic, Option Explicit-Anweisung[Laufzeit] hat geschrieben:Legt fest, dass jede Variable im Programmcode explizit mit der Dim-Anweisung deklariert werden muss.
Jede bedeutet eben: nicht nur "einige".
DIM und PRIVATE sind dabei fast gleich (s. ebenfalls in der Hilfe)
Weiterhin viel Spass mit OOo-StarBasic

Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Textmarken in Writer-Vorlage "festnageln"
Hallo,
ich habe das gleiche Problem mit der gleichen Anwendung.
Habe immer noch den Fehler
Leider kann ich damit
Beste Grüße
Ludwig
ich habe das gleiche Problem mit der gleichen Anwendung.
Habe immer noch den Fehler
Code: Alles auswählen
textFrames = oDoc.gettextFrame()
nichts anfangen. Könnt ihr mit weiterhelfen?Das liegt bestimmt daran, dass die Methode nicht definiert ist
Lese mal: API-Dokumentation
Beste Grüße
Ludwig