Aktionen für bestimmte Seitenformate - sofern im aktuellen Dokument vorhanden

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Aktionen für bestimmte Seitenformate - sofern im aktuellen Dokument vorhanden

Re: Aktionen für bestimmte Seitenformate - sofern im aktuellen Dokument vorhanden

von fraschi51 » Fr, 03.03.2023 09:05

- Ansicht wurde erzeugt
- Dokument speichern
- Dokument speichern unter
- Dokument drucken

Beim zweiten LibO-Aufruf kommt dann übrigens die Fehlermeldung nicht mehr ... :-?

Edit: Die Ergänzung der von Hiker vorgeschlagenen Zeile bringt nur Fehler.
Falls also sonst jemand eine funktionierende Code-Ergänzung kennt ....

Re: Aktionen für bestimmte Seitenformate - sofern im aktuellen Dokument vorhanden

von Hiker » Fr, 03.03.2023 08:28

? Ich hätte angenommen, dass Dein erstes IF derartige Fehler schon vermeidet:

Code: Alles auswählen

IF NOT ThisComponent.supportsService
Es sei denn ThisComponent ist nicht definiert....

Aber wenn das Macro an Laden eines Dokuments gebunden wird, sollte das nicht auftauchen. An welches Event hast Du das Macro den eingehängt?

Re: Aktionen für bestimmte Seitenformate - sofern im aktuellen Dokument vorhanden

von fraschi51 » Fr, 03.03.2023 05:32

Jetzt habe ich noch eine Ergänzungsfrage:

Mit welchem ergänzenden Code kann ich verhindern, dass das Macro auch beim LibO-Programmstart ausgeführt werden will und dann natürlich auf Fehler läuft, weil kein Spreadsheet geladen ist?

Besten Dank für Hinweise
Franklin

Re: Aktionen für bestimmte Seitenformate - sofern im aktuellen Dokument vorhanden

von fraschi51 » So, 11.12.2022 11:47

Danke, jetzt kommt keine Fehlermeldung mehr ... ich werde es dann mal ausprobieren und weiter beobachten ...

Franklin

Re: Aktionen für bestimmte Seitenformate - sofern im aktuellen Dokument vorhanden

von Toxitom » So, 11.12.2022 11:36

ja, sorry, da fehlt noch ne Zeile;))

Nach der if -Abfrage muss es heissen:

Code: Alles auswählen

oSeitenFormat = oSeitenFormate.getByName(stylename)


Viele Grüße
Tom

Re: Aktionen für bestimmte Seitenformate - sofern im aktuellen Dokument vorhanden

von fraschi51 » So, 11.12.2022 11:32

Danke für den Code, aber bei

.FooterIsOn = True

kommt die Fehlermeldung 'Objektvariable nicht belegt'.

Zu Deiner Frage: Ja, das hatte ich auch erst überlegt, aber es kann sein, dass es in einigen Arbeitsblättern bestimmte Seitenformate gibt, wo die rechte Fußzeile eben mit einem anderen Inhalt belegt ist - und das sollte dann nicht geändert werden.

Re: Aktionen für bestimmte Seitenformate - sofern im aktuellen Dokument vorhanden

von Toxitom » So, 11.12.2022 11:17

Hey Franklin,

bleibt erst noch mal die Frage: warum willst Du eine Einschränkung der Seitenvorlagen in einem Array überhaut vornehmen? Möchtest Du nicht einfach alle im Dokument vertreteten bearbeiten? Oder soll das wirklich selektiv nur auf die Von Dir benannten stattfinden?

Also, der Code sehe dann wie folgt aus:

Code: Alles auswählen

Sub FusszeileSetzen

 IF NOT ThisComponent.supportsService ( "com.sun.star.sheet.SpreadsheetDocument" ) then exit Sub

	DIM OFormatFamilien as Object, oSeitenFormate as Object
	DIM oSeitenFormat as Object, oFT as Object, oText as Object

	oFormatFamilien = ThisComponent.StyleFamilies
	oSeitenFormate = oFormatFamilien.getByName("PageStyles")
	REM Schleife über alle gewünschten Seitenformate
	for each stylename in Array("Standard", "Standard_Min")    'den Array besser gesondert definieren und aufbauen ...aber ok
	   if oSeitenFormate.hasByName(stylename) then    'nur, wenn das Seitenformat überhaupt vorhanden ist!
	      oSeitenFormat = oSeitenFormate.getByName(stylename)
	      with oSeitenFormat
	         .FooterIsOn = True
	         .FooterIsShared = true  'beide Seiten sind gleich
	         .firstPageFooterIsShared = TRUE  'erste Seite wie Folgeseiten
	       end with
	   
	     oText = oFT.RightText     'Rechtes Textobjekt
	     oText.setstring(format( now(), "yyyy-mm-dd"))
	     oSeitenFormat.rightPageFooterContent = oFT
	     
	   end if
       next
End Sub
Viele Grüße
Tom

Aktionen für bestimmte Seitenformate - sofern im aktuellen Dokument vorhanden

von fraschi51 » So, 11.12.2022 10:56

Hallo miteinander,

ich probiere das aktuelle, aber nicht lokal, sondern nach ISO formatierte, Datum in die Fußzeile zu bringen, was ja grundsätzlich mit dem nachfolgenden Code - bezogen auf das Standard-Seitenformat - auch gelingt:

Code: Alles auswählen

Sub FusszeileSetzen

 IF NOT ThisComponent.supportsService ( "com.sun.star.sheet.SpreadsheetDocument" ) then exit Sub

	DIM OFormatFamilien as Object, oSeitenFormate as Object
	DIM oSeitenFormat as Object, oFT as Object, oText as Object

	oFormatFamilien = ThisComponent.StyleFamilies
	oSeitenFormate = oFormatFamilien.getByName("PageStyles")
'	for each stylename in Array("Standard", "Standard_Min")
	oSeitenFormat = oSeitenFormate.getByName("Default")
'	oSeitenFormat = oSeitenFormate.getByName("Standard_Min")
'	oSeitenFormat = oSeitenFormate.getByName(stylename)
	oSeitenFormat.FooterIsOn = True
	oSeitenFormat.FooterIsShared = true  'beide Seiten sind gleich
	oSeitenFormat.firstPageFooterIsShared = TRUE  'erste Seite wie Folgeseiten
	oFT = oSeitenFormat.rightPageFooterContent  'FooterText Objekt
	
	oText = oFT.RightText     'Rechtes Textobjekt
	
	oText.setstring(format( now(), "yyyy-mm-dd"))

	oSeitenFormat.rightPageFooterContent = oFT
End Sub
Jetzt wollte ich diese Anweisungen nicht nur im Standard-, sondern auch noch in einem weiteren Seitenformat vornehmen lassen.
Die oben auskommentierte 'for each'-Schleife (mit der anschließenden Auswahl aus dem Array) funktioniert aber nur, sofern auch die beiden, im Array genannten Seitenformate überhaupt im aktuellen Dokument vorhanden sind.
Wie kann ich also die 'for each'-Schleife so beschränken, dass sie nur für die Seitenformate durchlaufen wird, die auch im aktuellen Dokument tatsächlich vorhanden sind?

Besten Dank für sachdienliche Hinweise.

Franklin

Moderatorenhinweis:
Verschoben nach "Makros und allgemeine Programmierung"

Nach oben