von manese » So, 30.12.2012 20:23
Hallo Mojo Dodo,
ich hatte das gleiche Problem wie du, zumal die automatische Anzeige der Formatvorlagen auf mich auch eher zufallsbedingt wirkt. Außerdem wollte ich gerne meine häufigsten Zeichen-, Absatz- und Formatvorlagen in einem Drop-Down-Menu haben, ohne vorher immer umschalten zu müssen.
Die von mir gefundene Lösung ist etwas aufwändig, aber ich setze sie jetzt ständig ein. Das System ist folgendes:
1. Makros erstellen
Ich habe für jede Vorlage ein Makro geschrieben. Dieses prüft zunächst, ob die gewünschte Formatvorlage bereits vorhanden ist. Wenn das nicht der Fall ist, bildet es eine entsprechende Formatvorlage. Dann weist es der ausgewählten Stelle das gewünschte Format zu.
Drei beispielhafte Makros findest du hier:
Code: Alles auswählen
sub A_Franzoesisch
''''''''''''''''''''''''''''''''''''''''''''''
'Den Namen für die Absatzformatvorlage zuweisen
Dim sName as String
sName = "Französisch"
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Sprache vorbereiten
Dim vSprache as new com.sun.star.lang.Locale
vSprache.Language = "fr"
vSprache.Country = "FR"
''''''''''''''''''''''''''''''''''''''''''''''
'Den Viewcursor und einen Textcursor erstellen
Dim oDoc as object
oDoc = ThisComponent
Dim oViewC as object
oViewC = oDoc.getCurrentController().getViewCursor()
Dim oTextC as object
''''''''''''''''''''
If isEmpty(oViewC.textTable) then
oTextC = oDoc.text.createTextCursorByRange(oViewC)
Else
Dim oZelle as object
oZelle = oViewC.Cell
oTextC = oZelle.getText().createTextCursorByRange(oViewC)
Endif
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Absatzvorlage holen oder erstellen
Dim vStyle
Dim vParaStyles
vParaStyles = oDoc.StyleFamilies.getByName("ParagraphStyles")
'''''''''''''
if vParaStyles.hasByName(sName) then
vStyle=vParaStyles.getByName(sName)
else
vStyle = oDoc.createInstance("com.sun.star.style.ParagraphStyle")
''''''''''''''''''''''''''''''''''''''''''''''''
'Die Absatzeigenschaften definieren
with vStyle
.CharFontName = "Palatino Linotype"
.CharHeight = 12
.CharLocale = vSprache
end with
vParaStyles.insertByName(sName, vStyle)
end if
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Absatzvorlage zuweisen
oTextC.ParaStyleName = sName
Dim Ende
end sub
sub S_Querformat
''''''''''''''''''''''''''''''''''''''''''''''
'Den Namen für die Seitenformatvorlage zuweisen
Dim sName as String
sName = "Querformat"
''''''''''''''''''''''''''''''''''''''''''''''
'Den Viewcursor und einen Textcursor erstellen
Dim oDoc as object
oDoc = ThisComponent
Dim oViewC as object
oViewC = oDoc.getCurrentController().getViewCursor()
Dim oTextC as object
''''''''''''''''''''
If isEmpty(oViewC.textTable) then
oTextC = oDoc.text.createTextCursorByRange(oViewC)
Else
Dim oZelle as object
oZelle = oViewC.Cell
oTextC = oZelle.getText().createTextCursorByRange(oViewC)
Endif
''''''''''''''''''''''''''''''''''''''''''''
'Seitenvorlage holen oder erstellen
Dim vSeitenvorlage
Dim vPageStyles
vPageStyles = oDoc.StyleFamilies.getByname("PageStyles")
if vPageStyles.hasByName(sName) then
vPageStyles.getByName(sName)
else
vSeitenvorlage = oDoc.createInstance("com.sun.star.style.PageStyle")
''''''''''''''''''''''''''''''''''''''''''''
with vSeitenvorlage
.Width = 29700
.Height = 21000
end with
vPageStyles.insertByName(sName, vSeitenvorlage)
end if
'''''''''''''''''''''''''''''''''''
'Den ersten Absatz ansprechen und dort die Seitenvorlage zuweisen
'(Die Eigenschaft PagStyleName ist schreibgeschützt)
Dim oAbsatz as object
oAbsatz = oDoc.text.createEnumeration.nextElement
oAbsatz.PageDescname = sName
Dim Ende
end sub
sub Z_rot
''''''''''''''''''''''''''''''''''''''''''''''
'Den Namen für die Absatzformatvorlage zuweisen
Dim sName as String
sName = "rot"
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Sprache vorbereiten
Dim vSprache as new com.sun.star.lang.Locale
vSprache.Language = "de"
vSprache.Country = "DE"
''''''''''''''''''''''''''''''''''''''''''''''
'Den Viewcursor und einen Textcursor erstellen
Dim oDoc as object
oDoc = ThisComponent
Dim oViewC as object
oViewC = oDoc.getCurrentController().getViewCursor()
' oViewC = oDoc.getCurrentSelection()
Dim oTextC as object
''''''''''''''''''''
If isEmpty(oViewC.textTable) then
oTextC = oDoc.text.createTextCursorByRange(oViewC)
Else
Dim oZelle as object
oZelle = oViewC.Cell
oTextC = oZelle.getText().createTextCursorByRange(oViewC)
Endif
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Zeichenvorlage holen oder erstellen
Dim vZeichenformat
Dim vCharStyles
vCharStyles = oDoc.StyleFamilies.getByName("CharacterStyles")
'''''''''''''
if vCharStyles.hasByName(sName) then
vZeichenformat=vCharStyles.getByName(sName)
else
vZeichenformat = oDoc.createInstance("com.sun.star.style.CharacterStyle")
''''''''''''''''''''''''''''''''''''''''''''''''
'Die Zeicheneigenschaften definieren
with vZeichenformat
' .CharFontName = "ZapfHumnst BT"
' .CharBackColor = 16711680
.CharLocale = vSprache
.CharUnderline = 13
.CharUnderlineHasColor = true
.CharUnderlineColor = 16711680
end with
vCharStyles.insertByName(sName, vZeichenformat)
end if
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Zeichenvorlage zuweisen
oTextC.CharStyleName = sName
Dim Ende
end sub
2. Menüleiste erweitern
Über
- Extras>Anpassen>Menüs: Neu
erstelle ich einen neuen Menüeintrag „Formatvorlagen“
3. Formatvorlagen einfügen
Über
- Extras>Anpassen>Menüs: Menü: Formatvorlagen
Hinzufügen
Bereich: Makros: meine Makros
füge ich die entsprechenden Formatvorlagen-Makros als Üntermenüpunkte hinzu.
Wenn es Probleme gibt, melde dich ruhig.
Alles Gute
matthias
Hallo Mojo Dodo,
ich hatte das gleiche Problem wie du, zumal die automatische Anzeige der Formatvorlagen auf mich auch eher zufallsbedingt wirkt. Außerdem wollte ich gerne meine häufigsten Zeichen-, Absatz- und Formatvorlagen in einem Drop-Down-Menu haben, ohne vorher immer umschalten zu müssen.
Die von mir gefundene Lösung ist etwas aufwändig, aber ich setze sie jetzt ständig ein. Das System ist folgendes:
[b]1. Makros erstellen[/b]
Ich habe für jede Vorlage ein Makro geschrieben. Dieses prüft zunächst, ob die gewünschte Formatvorlage bereits vorhanden ist. Wenn das nicht der Fall ist, bildet es eine entsprechende Formatvorlage. Dann weist es der ausgewählten Stelle das gewünschte Format zu.
Drei beispielhafte Makros findest du hier:
[code]sub A_Franzoesisch
''''''''''''''''''''''''''''''''''''''''''''''
'Den Namen für die Absatzformatvorlage zuweisen
Dim sName as String
sName = "Französisch"
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Sprache vorbereiten
Dim vSprache as new com.sun.star.lang.Locale
vSprache.Language = "fr"
vSprache.Country = "FR"
''''''''''''''''''''''''''''''''''''''''''''''
'Den Viewcursor und einen Textcursor erstellen
Dim oDoc as object
oDoc = ThisComponent
Dim oViewC as object
oViewC = oDoc.getCurrentController().getViewCursor()
Dim oTextC as object
''''''''''''''''''''
If isEmpty(oViewC.textTable) then
oTextC = oDoc.text.createTextCursorByRange(oViewC)
Else
Dim oZelle as object
oZelle = oViewC.Cell
oTextC = oZelle.getText().createTextCursorByRange(oViewC)
Endif
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Absatzvorlage holen oder erstellen
Dim vStyle
Dim vParaStyles
vParaStyles = oDoc.StyleFamilies.getByName("ParagraphStyles")
'''''''''''''
if vParaStyles.hasByName(sName) then
vStyle=vParaStyles.getByName(sName)
else
vStyle = oDoc.createInstance("com.sun.star.style.ParagraphStyle")
''''''''''''''''''''''''''''''''''''''''''''''''
'Die Absatzeigenschaften definieren
with vStyle
.CharFontName = "Palatino Linotype"
.CharHeight = 12
.CharLocale = vSprache
end with
vParaStyles.insertByName(sName, vStyle)
end if
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Absatzvorlage zuweisen
oTextC.ParaStyleName = sName
Dim Ende
end sub
sub S_Querformat
''''''''''''''''''''''''''''''''''''''''''''''
'Den Namen für die Seitenformatvorlage zuweisen
Dim sName as String
sName = "Querformat"
''''''''''''''''''''''''''''''''''''''''''''''
'Den Viewcursor und einen Textcursor erstellen
Dim oDoc as object
oDoc = ThisComponent
Dim oViewC as object
oViewC = oDoc.getCurrentController().getViewCursor()
Dim oTextC as object
''''''''''''''''''''
If isEmpty(oViewC.textTable) then
oTextC = oDoc.text.createTextCursorByRange(oViewC)
Else
Dim oZelle as object
oZelle = oViewC.Cell
oTextC = oZelle.getText().createTextCursorByRange(oViewC)
Endif
''''''''''''''''''''''''''''''''''''''''''''
'Seitenvorlage holen oder erstellen
Dim vSeitenvorlage
Dim vPageStyles
vPageStyles = oDoc.StyleFamilies.getByname("PageStyles")
if vPageStyles.hasByName(sName) then
vPageStyles.getByName(sName)
else
vSeitenvorlage = oDoc.createInstance("com.sun.star.style.PageStyle")
''''''''''''''''''''''''''''''''''''''''''''
with vSeitenvorlage
.Width = 29700
.Height = 21000
end with
vPageStyles.insertByName(sName, vSeitenvorlage)
end if
'''''''''''''''''''''''''''''''''''
'Den ersten Absatz ansprechen und dort die Seitenvorlage zuweisen
'(Die Eigenschaft PagStyleName ist schreibgeschützt)
Dim oAbsatz as object
oAbsatz = oDoc.text.createEnumeration.nextElement
oAbsatz.PageDescname = sName
Dim Ende
end sub
sub Z_rot
''''''''''''''''''''''''''''''''''''''''''''''
'Den Namen für die Absatzformatvorlage zuweisen
Dim sName as String
sName = "rot"
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Sprache vorbereiten
Dim vSprache as new com.sun.star.lang.Locale
vSprache.Language = "de"
vSprache.Country = "DE"
''''''''''''''''''''''''''''''''''''''''''''''
'Den Viewcursor und einen Textcursor erstellen
Dim oDoc as object
oDoc = ThisComponent
Dim oViewC as object
oViewC = oDoc.getCurrentController().getViewCursor()
' oViewC = oDoc.getCurrentSelection()
Dim oTextC as object
''''''''''''''''''''
If isEmpty(oViewC.textTable) then
oTextC = oDoc.text.createTextCursorByRange(oViewC)
Else
Dim oZelle as object
oZelle = oViewC.Cell
oTextC = oZelle.getText().createTextCursorByRange(oViewC)
Endif
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Zeichenvorlage holen oder erstellen
Dim vZeichenformat
Dim vCharStyles
vCharStyles = oDoc.StyleFamilies.getByName("CharacterStyles")
'''''''''''''
if vCharStyles.hasByName(sName) then
vZeichenformat=vCharStyles.getByName(sName)
else
vZeichenformat = oDoc.createInstance("com.sun.star.style.CharacterStyle")
''''''''''''''''''''''''''''''''''''''''''''''''
'Die Zeicheneigenschaften definieren
with vZeichenformat
' .CharFontName = "ZapfHumnst BT"
' .CharBackColor = 16711680
.CharLocale = vSprache
.CharUnderline = 13
.CharUnderlineHasColor = true
.CharUnderlineColor = 16711680
end with
vCharStyles.insertByName(sName, vZeichenformat)
end if
'''''''''''''''''''''''''''''''''''''''''''''''
'Die Zeichenvorlage zuweisen
oTextC.CharStyleName = sName
Dim Ende
end sub
[/code]
[b]2. Menüleiste erweitern[/b]
Über
[list]Extras>Anpassen>Menüs: Neu[/list]
erstelle ich einen neuen Menüeintrag „Formatvorlagen“
[b]3. Formatvorlagen einfügen[/b]
Über
[list]Extras>Anpassen>Menüs: Menü: Formatvorlagen
Hinzufügen
Bereich: Makros: meine Makros[/list]
füge ich die entsprechenden Formatvorlagen-Makros als Üntermenüpunkte hinzu.
Wenn es Probleme gibt, melde dich ruhig.
Alles Gute
matthias