Einfügen von Variablen-Inhalt an Textmarken
Moderator: Moderatoren
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Einfügen von Variablen-Inhalt an Textmarken
Guten Morgen,
eine Sache fehlt mir noch in meinem Makro neben den verschwindenen Einträge, das Einfügen der Variablen-Inhalte in das Dokument an den entsprechenden Textmarken.
Da weiß ich nun komplett nicht weiter...
Viele Grüße
Lillie
eine Sache fehlt mir noch in meinem Makro neben den verschwindenen Einträge, das Einfügen der Variablen-Inhalte in das Dokument an den entsprechenden Textmarken.
Da weiß ich nun komplett nicht weiter...
Viele Grüße
Lillie
Hi,
versuchs aml damit:
Michael
versuchs aml damit:
Code: Alles auswählen
oDoc = thisdocument
Dim oBookmark As Object
oBookmark = oDoc.Bookmarks.getByName("Textmarke" )
oBookmarkAnchor = oBookmark.Anchor
oRangeCursor = oDoc.Text.createTextCursorByRange( oBookmarkAnchor )
oRangeCursor.String = stext
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
FAQ zu Starbasic -> http://www.starbasicfaq.de
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Probier es sofort aus!
Hallo,
danke schön, ich probier es sofort aus.
Viele Grüße
Lillie
danke schön, ich probier es sofort aus.
Viele Grüße
Lillie
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Geht nicht :(
Hallo,
das funktioniert leider nicht. Was könnte mein Fehler sein?
Viele Grüße
Lillie
das funktioniert leider nicht. Was könnte mein Fehler sein?
Viele Grüße
Lillie
Versuchs mal mit der Kurzfassung.
Der erste Code von mir geht in meiner Anwendung. Und ansonsten läuft er komischerweise nicht..
Michael
Code: Alles auswählen
oDoc.getBookmarks().getByName("Textmarke").getAnchor.setString(
"Text")
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
FAQ zu Starbasic -> http://www.starbasicfaq.de
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Geht auch nicht :(
Das geht auch nicht...Ich habe da bestimmt irgendwas falsch gemacht, den ich aber nicht sehe...
oDoc = ThisDocument
oBookmark = oDoc.Bookmarks.getByName("Auskunft")
oBookmarkAnchor = oBookmark.Anchor
oRangeCursor = oDoc.Text.CreateTextCursorByRange (oBookmarkAnchor)
oRangeCursor.String = sAnrede1
oDoc, oBookmark, oBookmarkAnchor und oRangeCursor habe ich Global und als Objekte...
Könnte da irgendein Fehler sein?
Viele Grüße
Lillie
oDoc = ThisDocument
oBookmark = oDoc.Bookmarks.getByName("Auskunft")
oBookmarkAnchor = oBookmark.Anchor
oRangeCursor = oDoc.Text.CreateTextCursorByRange (oBookmarkAnchor)
oRangeCursor.String = sAnrede1
oDoc, oBookmark, oBookmarkAnchor und oRangeCursor habe ich Global und als Objekte...
Könnte da irgendein Fehler sein?
Viele Grüße
Lillie
Hi,
ich habe es eben noch mal geprüft:
Bei mir geht:
Bei mir geht:
Du musst darauf achten das bei der Textmarke Gross- und Kleinschreibung berücksichtigt wird.
Und der Verweis für odoc sollte odoc=thiscomponent sein. Sorry.
Michael
ich habe es eben noch mal geprüft:
Bei mir geht:
Code: Alles auswählen
odoc=thiscomponent
oDoc.getBookmarks().getByName("test").getAnchor.setString("What you want to insert")
Code: Alles auswählen
sub test
dateneintragen("Meintext", "Textmarke")
end Sub
Sub DatenEintragen( stext, sBookMark as String)
oDoc = ThisComponent
On Error Goto Errorhandler
oRangeCursor = JumpToBookmark( oDoc,sBookMark )
oRangeCursor.String = stext
Exit Sub
Errorhandler:
End Sub
Function JumpToBookmark( oDoc As Object, sBookmarkName As String ) As Object
' Jump to the Bookmark and get the Cursor from the selection
Dim oBookmark As Object
oBookmark = oDoc.Bookmarks.getByName(sBookmarkName)
oBookmarkAnchor = oBookmark.Anchor
oRangeCursor = oDoc.Text.createTextCursorByRange( oBookmarkAnchor )
JumpToBookmark = oRangeCursor
End Function
Und der Verweis für odoc sollte odoc=thiscomponent sein. Sorry.
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
FAQ zu Starbasic -> http://www.starbasicfaq.de
Hallo,
ich kann Euch leider bei Eurem Problem mit den Bookmarks nicht helfen. Ich habe aber mal etwas ähnliches mit Feldbefehlen gemacht. Das ging eigentlich ganz einfach und flott.
1. wirter-Dokument öffnen oder neues erstellen
2. Dort wo Du einen Text einsetzen will erstellst Du Feldbefehle
Nun folgt ein Stück BasicCode. Er iteriert ganz einfach über alle Feldbefehle im Dokument und fügt der Variable mit dem Namen xyz den Wert qrs zu. Am Ende werden die Feldbefehle refresht, damit die das WriterDokument die Änderungen auch aktualisiert un anzeigt.
have fun...
ich kann Euch leider bei Eurem Problem mit den Bookmarks nicht helfen. Ich habe aber mal etwas ähnliches mit Feldbefehlen gemacht. Das ging eigentlich ganz einfach und flott.
1. wirter-Dokument öffnen oder neues erstellen
2. Dort wo Du einen Text einsetzen will erstellst Du Feldbefehle
- a) Menu: Einfügen - Feldbefehl - Andere...
b) Register "Variablen" auswählen
- a) Feldtyp: Variable setzen
b) Format: Text
c) Name: wähle einen Namen für jedes Feld (im Beispiel-Script
Vorname, Name, Strasse )
d) Wert: Wähle einen Dummy-Wert, damit das Feld im Dokument
sichbar ist
Nun folgt ein Stück BasicCode. Er iteriert ganz einfach über alle Feldbefehle im Dokument und fügt der Variable mit dem Namen xyz den Wert qrs zu. Am Ende werden die Feldbefehle refresht, damit die das WriterDokument die Änderungen auch aktualisiert un anzeigt.
Code: Alles auswählen
Sub Main
Dim oDoc as Object
Dim textFieldEnumeration as Object
Dim currentField as Object
oDoc = thisComponent
textFieldEnumeration = oDoc.getTextFields().createEnumeration()
' loop durch alle Felder
While textFieldEnumeration.hasMoreElements()
currentField = textFieldEnumeration.nextElement()
' test nach dem Variablenname des Feldes
If currentField.VariableName = "Name" then
currentField.Content = "Ein Name über OOBasic gesetzt"
Elseif currentField.VariableName = "Vorname" then
currentField.Content = "Ein Vorname über OOBasic"
Elseif currentField.VariableName = "Strasse" then
currentField.Content = "Eine Strasse über OOBasic"
Else
currentField.Content = "Unbekanntes Feld"
End If
Wend
' wichtig !! Refresh damit die Änderungen
' im Dokument angezeigt werden
oDoc.getTextFields().refresh()
End Sub
Meine Installation: AMD Athlon XP 1600+, 512 MB RAM, SuSE Linux 8.2, OpenOffice 1.1
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Irgendwas stimmt bei mir nicht...
Hallo,
irgendwie ist das merkwürdig, bei mir scheint was nicht zu stimmen, weil es gibt mehrere Sachen, bei denen mein Makro zurückspringt.
Zum Beispiel kennt er bei oDoc = ThisComponent nur, wenn es oDoc = ThisDocument heißt und weiter geht es mit While TextFieldEnumeration.hasMoreElements(), mag er nicht.
Woran kann das liegen? Weil wenn das gelöst ist, würden beide Möglichkeiten funktionieren...
Viele Grüße
Lillie
irgendwie ist das merkwürdig, bei mir scheint was nicht zu stimmen, weil es gibt mehrere Sachen, bei denen mein Makro zurückspringt.
Zum Beispiel kennt er bei oDoc = ThisComponent nur, wenn es oDoc = ThisDocument heißt und weiter geht es mit While TextFieldEnumeration.hasMoreElements(), mag er nicht.
Woran kann das liegen? Weil wenn das gelöst ist, würden beide Möglichkeiten funktionieren...
Viele Grüße
Lillie
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
in einem neuen Dokument geht es...
das verstehe ich echt nicht, in einem neuen Dokument geht es und in meinem, in dem das drin stehen soll, hakt es jetzt ab:
If currentField.VariableName = "Name" then
aber warum?
If currentField.VariableName = "Name" then
aber warum?
Manchmal gibt es Schwierigkeiten, welche von Dingen abhängen, die nichts mit dem Code zu tun haben:
1. Copy und Paste aus einer Website in die BasicIDE klappt bei mir nicht immer sehr gut. Manchmal hab ich dabei Stress wegen zusätzlichen oder Fehlenden Zeilenumbrüchen die durch C&P (Linux, OOo xyz) entstehen. Massnahme: ?? Abtippen ??
2. Ich bilde mir ein, dass es manchmal nötig ist ein Script aus dem Document heraus auszurufen und nicht aus der IDE. Massnahme: Man kann man zu Testzwecken einen Button machen, der im Document ist und mit dem BasicCode verknüpft wird. Ene andere Variante is jedesmal Extras - Macros - Macros und dann das Macros auswählen und ausführen drücken. Kann sein, dass das paranoid ist aber bei einigen Beispielen hatte ich das Gefühl das hilft.
Zum konkreten Beispiel mit den Feldbefehlen:
(code nicht von mir ... )
Die Methode DisplayMethods zeigt dir die Methoden, Properties und Interfaces an, welche ein Object besitzt. Das Beispiel in der Main-Routine zeigt die Methoden, Properties und Interfaces an, welche für das Object thisComponent vorhanden sind. Ultrapraktisch, um mehr über ein Objekt (TextField?) herauszufinden.
1. Copy und Paste aus einer Website in die BasicIDE klappt bei mir nicht immer sehr gut. Manchmal hab ich dabei Stress wegen zusätzlichen oder Fehlenden Zeilenumbrüchen die durch C&P (Linux, OOo xyz) entstehen. Massnahme: ?? Abtippen ??
2. Ich bilde mir ein, dass es manchmal nötig ist ein Script aus dem Document heraus auszurufen und nicht aus der IDE. Massnahme: Man kann man zu Testzwecken einen Button machen, der im Document ist und mit dem BasicCode verknüpft wird. Ene andere Variante is jedesmal Extras - Macros - Macros und dann das Macros auswählen und ausführen drücken. Kann sein, dass das paranoid ist aber bei einigen Beispielen hatte ich das Gefühl das hilft.
Zum konkreten Beispiel mit den Feldbefehlen:
Möglicherweise enthält das Dokument TextFields, die keinen VariableNamen haben (Variablenfeld, Format Text, Name und Wert gesetzt?). Hmmm.. Man müsste im COde testen, ob das currentField das Interface unterstützt, welches wir benötigen. Ich werde Dir den entsprechenden Code nachreichen. Inzwischen hab ich Dir was informatives:hakt es jetzt ab:
If currentField.VariableName = "Name" then
(code nicht von mir ... )
Code: Alles auswählen
Sub Main
DisplayMethods( thisComponent, "" )
DisplayMethods( thisComponent, "props" )
DisplayMethods( thisComponent, "interfaces" )
End Sub
Sub DisplayMethods(oObj As Object, SWhat As String)
DIM sMethodList As String, sMsgBox As String
DIM fs, ep As Integer
DIM i As Integer
DIM EOL As Boolean
if sWhat = "" then
sMethodList = oObj.DBG_methods
elseif sWhat = "props" then
sMethodList = oObj.DBG_Properties
else
sMethodList = oObj.DBG_SupportedInterfaces
endif
fs = 1
EOL = FALSE
While fs <= Len(sMethodList)
sMsgBox = ""
For i = 0 to 15
ep = InStr(fs, sMethodList, ";")
if ep = 0 then
ep = Len(sMethodList)
endif
sMsgBox = sMsgBox & Mid$(sMethodList, fs, ep - fs) & Chr$(13)
fs = ep + 1
Next i
MsgBox sMsgBox
Wend
End Sub
Die Methode DisplayMethods zeigt dir die Methoden, Properties und Interfaces an, welche ein Object besitzt. Das Beispiel in der Main-Routine zeigt die Methoden, Properties und Interfaces an, welche für das Object thisComponent vorhanden sind. Ultrapraktisch, um mehr über ein Objekt (TextField?) herauszufinden.
Meine Installation: AMD Athlon XP 1600+, 512 MB RAM, SuSE Linux 8.2, OpenOffice 1.1
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
Ich hab das Beispiel von ykcim ausprobiert. Ich hatte genau das Problem, dass ich in Punkt 1 meines letzten Post beschrieben habe. Copy und Paste (KDE 3.1.1, Konqueror, OOo1.1rc2) aus dem Forum kopiert jene Leerzeichen, die OOo anscheinend nicht mag.
Nachdem ich bei jeder Zeile die Leerzeichen vorne und hinten entfernt habe (am besten auch die Zeilenumbrüche löschen und neu eingeben), gabs keine Probleme mehr. Hübsche Lösung, vor allem die Kurzversion ist edel:
Nachdem ich bei jeder Zeile die Leerzeichen vorne und hinten entfernt habe (am besten auch die Zeilenumbrüche löschen und neu eingeben), gabs keine Probleme mehr. Hübsche Lösung, vor allem die Kurzversion ist edel:
Code: Alles auswählen
thisComponent.getBookmarks().getByName("test").getAnchor.setString("What you want to insert")
Meine Installation: AMD Athlon XP 1600+, 512 MB RAM, SuSE Linux 8.2, OpenOffice 1.1
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
das ist was..
wie mache ich das mit dem Button?
Danke im Übrigen das hat noch ein Problem von mir gelöst, das später aufgetreten wäre...
Danke im Übrigen das hat noch ein Problem von mir gelöst, das später aufgetreten wäre...
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Hallo,
gerade habe ich den Code abgetippt und das geht nicht, der hakt einfach bei:
If CurrentField.VariableName = "Name" then
In einem neuen Dokument klappt das, klappen beide Lösungen.
Ich hab da alles kontrolliert, ob da ein Tippfehler drin ist oder so: Ist nicht.
Aus dem Dokument aufrufen klappt auch nicht, also die Stelle.
Der Rest geht, also oDoc = ThisComponent (mir scheint, als ob ihm das gleich wäre, groß oder klein).
Viele Grüße und einen schönen Vormittag
Lillie
PS.: Bin ab heute Mittag im Urlaub, deswegen kann sein, dass ab da nichts mehr von mir kommt. Vielleicht nehme ich mir das auch mit an den Strand.
gerade habe ich den Code abgetippt und das geht nicht, der hakt einfach bei:
If CurrentField.VariableName = "Name" then
In einem neuen Dokument klappt das, klappen beide Lösungen.
Ich hab da alles kontrolliert, ob da ein Tippfehler drin ist oder so: Ist nicht.
Aus dem Dokument aufrufen klappt auch nicht, also die Stelle.
Der Rest geht, also oDoc = ThisComponent (mir scheint, als ob ihm das gleich wäre, groß oder klein).
Viele Grüße und einen schönen Vormittag
Lillie
PS.: Bin ab heute Mittag im Urlaub, deswegen kann sein, dass ab da nichts mehr von mir kommt. Vielleicht nehme ich mir das auch mit an den Strand.
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Klappt auch mit den Feldern nicht
Hallo,
das mit den Feldern ist für mich die einfachste Lösung, aber leider funktioniert das auch nicht. Woran kann das liegen?
VieleGrüße
Lillie
das mit den Feldern ist für mich die einfachste Lösung, aber leider funktioniert das auch nicht. Woran kann das liegen?
VieleGrüße
Lillie