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