von tom670 » Mo, 08.03.2010 22:59
Hallo turtle47,
Hallo DPunch,
ich habe eure Lösungsvorschläge ausprobiert.
@turtle47
Die Zeile "Option Explicit" existiert. Daher habe ich den Quellcode deines Programms entsprechend deiner Anleitung ersetzt.
Nun erhalte ich die Fehlermeldung s. Fehler_turtle47.jpg weiter unten.
@DPunch
Einen Zugriff auf die Routinen habe ich nicht. Die sind mit einem Passwort geschützt. Es existieren zwar einige Codezeilen welche sich auf Platzhalter beziehen, aber das sieht mir mehr nach dem Aufbau von den zur Verfügung gestellten Menüleisten aus. Hier ein Beispiel:
Code: Alles auswählen
sub InsertBelegnummer
InsertPlaceholder("TransNumber", "Belegnummer")
end sub
Wenn ich deinen Lösungsvorschlag ausführe, dann ist die Artikelzeile inkl. der Zeile mit dem Leistungsdatum 'leer'. Also die ganze Zelle hat keinen Inhalt mehr. Dabei ist es egal, ob es ein Leistungsdatum gibt oder nicht.
Ferner sind mir noch 3 Prozeduren aufgefallen. Ich weiß nicht wann diese ausgeführt werden, aber eine ähnelt deinem Code. Vielleicht kannst du damit was anfangen:
Code: Alles auswählen
Sub Example_RemoveAllPlaceholders
dim oDoc as object
dim oEnum as object
dim oTField as object
dim anc as object
dim StyleFamilies as object
dim PageStyles as object
dim DefPage as object
dim header as object
oDoc = ThisComponent
StyleFamilies = oDoc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Standard")
header=DefPage.headertext
header.TextFields.createEnumeration
header.setString("Hallo")
oEnum = oDoc.TextFields.createEnumeration
Do While oEnum.hasMoreElements
oTField = oEnum.nextElement
If oTField.supportsService("com.sun.star.text.TextField.JumpEdit") Then
anc = oTField.getAnchor()
oDoc.Text.insertString(anc, ">>>>test<<<<", true)
'oDoc.Text.removeTextContent(oTField)
End If
Loop
End Sub
sub Test
InsertPlaceholder("a1", "b1")
InsertPlaceholder("a2", "b2")
InsertPlaceholder("a3", "b3")
InsertPlaceholder("a4", "b4")
InsertPlaceholder("a5", "b5")
end sub
sub InsertPlaceholder(nameString as String, tipString as String)
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(5) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Type"
args1(0).Value = 38
args1(1).Name = "SubType"
args1(1).Value = 0
args1(2).Name = "Name"
args1(2).Value = nameString
args1(3).Name = "Content"
args1(3).Value = tipString
args1(4).Name = "Format"
args1(4).Value = 0
args1(5).Name = "Separator"
args1(5).Value = " "
dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args1())
end sub
Danke für eure Hilfe.
Gruß
Tom
- Dateianhänge
-

- Fehler_turtle47.JPG (29.15 KiB) 2267 mal betrachtet
Hallo turtle47,
Hallo DPunch,
ich habe eure Lösungsvorschläge ausprobiert.
@turtle47
Die Zeile "Option Explicit" existiert. Daher habe ich den Quellcode deines Programms entsprechend deiner Anleitung ersetzt.
Nun erhalte ich die Fehlermeldung s. Fehler_turtle47.jpg weiter unten.
@DPunch
Einen Zugriff auf die Routinen habe ich nicht. Die sind mit einem Passwort geschützt. Es existieren zwar einige Codezeilen welche sich auf Platzhalter beziehen, aber das sieht mir mehr nach dem Aufbau von den zur Verfügung gestellten Menüleisten aus. Hier ein Beispiel:
[code] sub InsertBelegnummer
InsertPlaceholder("TransNumber", "Belegnummer")
end sub
[/code]
Wenn ich deinen Lösungsvorschlag ausführe, dann ist die Artikelzeile inkl. der Zeile mit dem Leistungsdatum 'leer'. Also die ganze Zelle hat keinen Inhalt mehr. Dabei ist es egal, ob es ein Leistungsdatum gibt oder nicht.
Ferner sind mir noch 3 Prozeduren aufgefallen. Ich weiß nicht wann diese ausgeführt werden, aber eine ähnelt deinem Code. Vielleicht kannst du damit was anfangen:
[code]Sub Example_RemoveAllPlaceholders
dim oDoc as object
dim oEnum as object
dim oTField as object
dim anc as object
dim StyleFamilies as object
dim PageStyles as object
dim DefPage as object
dim header as object
oDoc = ThisComponent
StyleFamilies = oDoc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Standard")
header=DefPage.headertext
header.TextFields.createEnumeration
header.setString("Hallo")
oEnum = oDoc.TextFields.createEnumeration
Do While oEnum.hasMoreElements
oTField = oEnum.nextElement
If oTField.supportsService("com.sun.star.text.TextField.JumpEdit") Then
anc = oTField.getAnchor()
oDoc.Text.insertString(anc, ">>>>test<<<<", true)
'oDoc.Text.removeTextContent(oTField)
End If
Loop
End Sub
sub Test
InsertPlaceholder("a1", "b1")
InsertPlaceholder("a2", "b2")
InsertPlaceholder("a3", "b3")
InsertPlaceholder("a4", "b4")
InsertPlaceholder("a5", "b5")
end sub
sub InsertPlaceholder(nameString as String, tipString as String)
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(5) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Type"
args1(0).Value = 38
args1(1).Name = "SubType"
args1(1).Value = 0
args1(2).Name = "Name"
args1(2).Value = nameString
args1(3).Name = "Content"
args1(3).Value = tipString
args1(4).Name = "Format"
args1(4).Value = 0
args1(5).Name = "Separator"
args1(5).Value = " "
dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args1())
end sub[/code]
Danke für eure Hilfe.
Gruß
Tom