Moin!
Ich erstelle gerade einen Dialog, mit dem Variablen in OOo-Writer-Dokumenten geändert, gelöscht und eingefügt werden sollen. Das Ändern und Löschen vorhandener Variablen klappt soweit. Nur mit dem Einfügen neuer Variablen hapert es. Ich habe schon einiges versucht, u.a. Code aus Andrew Pitonyaks Makro-Beispielen, aber damit kann ich nur Benutzerfelder einfügen, keine normalen Variablen.
Etwas problematisch ist auch der Ort des Einfügens. Am liebsten wäre mir zentral die Kopfzeile der ersten Seite des Dokuments.
Kann mir jemand weiterhelfen? So langsam verzweifle ich doch etwas...
Variablen in Writer-Dokument einfügen
Moderator: Moderatoren
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Variablen in Writer-Dokument einfügen
Moin Crismo,
was sind für Dich "normale" Varibalen?
Welche Codestücke aus Andrews Dokument hast Du versucht?
Kannst Du uns Code Deiner Versuche zeigen?
Zum Einfügen in die Kopfzeile muss die zugewiesene Seitenvorlage bearbeitet werden... (Beispiel für Calc)
was sind für Dich "normale" Varibalen?
Welche Codestücke aus Andrews Dokument hast Du versucht?
Kannst Du uns Code Deiner Versuche zeigen?
Zum Einfügen in die Kopfzeile muss die zugewiesene Seitenvorlage bearbeitet werden... (Beispiel für Calc)
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: Variablen in Writer-Dokument einfügen
Mit "normalen Variablen" meine ich die, die man über den Feldbefehl-Dialog nach Aufruf des Reiters "Variablen" mit "Variable setzen" einfügen kann.
Dieses Problem hat sich nun größtenteils erledigt. Da OOo 2.4 einen Bug hat, der die Anzeige von Variablen in Kopfzeilen und Tabellen verhindert, bin ich auf Benutzerfelder umgestiegen. Das Einfügen in die Kopfzeile funktioniert auch problemlos. Was noch nicht funktioniert, ist, die eingefügten Benutzerfelder mit StarBasic unsichtbar zu machen. Ich kann IsVisible = false setzen und bekomme auch keine Fehlermeldung, aber das Feld bleibt sichtbar.
Dieses Problem hat sich nun größtenteils erledigt. Da OOo 2.4 einen Bug hat, der die Anzeige von Variablen in Kopfzeilen und Tabellen verhindert, bin ich auf Benutzerfelder umgestiegen. Das Einfügen in die Kopfzeile funktioniert auch problemlos. Was noch nicht funktioniert, ist, die eingefügten Benutzerfelder mit StarBasic unsichtbar zu machen. Ich kann IsVisible = false setzen und bekomme auch keine Fehlermeldung, aber das Feld bleibt sichtbar.
Code: Alles auswählen
CONST MSG_YESNO = 4
CONST return_YES = 6
CONST return_NO = 7
CONST MSG_INFOICON = 32
const sService = "com.sun.star.text.FieldMaster.User"
const sServiceTextField = "com.sun.star.text.TextField.User"
Sub subAddNewVariable
Dim oDoc As Object ' current document
Dim oMaster As Object ' field master
Dim oField As Object ' text field in document text
Dim sName As String ' name of variable to change
Dim oPageStyles As Object ' all page styles
Dim oPageStyle As Object ' single page style
sName = oVariableNameEntryField.Text
oDoc = thisComponent
If Not oDoc.getTextFieldMasters().hasByName(sService & "." & sName) Then
' create variable
oMaster = oDoc.createInstance(sService)
oMaster.Name = sName
oMaster.Content = oVariableContentEntryfield.Text
' connect variable to text field
oField = oDoc.createInstance(sServiceTextField)
oField.IsVisible = false
oField.attachTextFieldMaster(oMaster)
' get page style for first page
oPageStyles = oDoc.getStyleFamilies().getByName("PageStyles")
oPageStyle = oPageStyles.getByName("Erste Seite")
oPageStyle.HeaderIsOn = true
' insert variable into header of first page
oCursor = oPageStyle.headerText.Text.createTextCursor()
oCursor.gotoEnd(false)
oPageStyle.headerText.Text.insertTextContent(oCursor, oField, false)
' add to list box
oVariablesListbox.addItem(sName, iVariableCount)
iVariableCount = iVariableCount + 1
Else
MsgBox( _
"Benutzerfeld " & sName & " bereits vorhanden." & CHR(10) & _
"Hinzufügen nicht möglich!", _
MSG_INFOICON, _
"Fehler!" )
End If
End Sub
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Variablen in Writer-Dokument einfügen
Dein Code funktioniert hier: die Eigenschaft invisible wird gesetzt (probiere mal einen Doppelklick auf das Feld).
Es wird allerdings erst unsichtbar, wenn Du:
* die Seitenvorschau aufgerufen hast,
* Felder>Aktualisieren aufgerufen wurde, oder
* das Dokument geschlossen und wieder geöffnet wurde.
Hilft Dir das weiter?
Es wird allerdings erst unsichtbar, wenn Du:
* die Seitenvorschau aufgerufen hast,
* Felder>Aktualisieren aufgerufen wurde, oder
* das Dokument geschlossen und wieder geöffnet wurde.
Hilft Dir 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)