❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro - wo ist der Fehler

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
LibreUser321
Beiträge: 22
Registriert: Mi 21. Aug 2019, 09:56

Makro - wo ist der Fehler

Beitrag von LibreUser321 » Do 22. Aug 2019, 09:16

Hallo zusammen,
ich habe ein Makro aufgezeichet mit dem ich folgende Schritte ausführen möchte:
1. Tabellenblatt markieren - funktioniert
2. Schrift auf Courier 12 ändern - funktioniert
3. Spaltenbreite anpassen - funktioniert nicht
Wer kann mir helfen?
Gruß Ulrich

sub Courier12
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(4) as new com.sun.star.beans.PropertyValue
args2(0).Name = "CharFontName.StyleName"
args2(0).Value = ""
args2(1).Name = "CharFontName.Pitch"
args2(1).Value = 1
args2(2).Name = "CharFontName.CharSet"
args2(2).Value = -1
args2(3).Name = "CharFontName.Family"
args2(3).Value = 2
args2(4).Name = "CharFontName.FamilyName"
args2(4).Value = "Courier New"

dispatcher.executeDispatch(document, ".uno:CharFontName", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(2) as new com.sun.star.beans.PropertyValue
args3(0).Name = "FontHeight.Height"
args3(0).Value = 12
args3(1).Name = "FontHeight.Prop"
args3(1).Value = 100
args3(2).Name = "FontHeight.Diff"
args3(2).Value = 0

dispatcher.executeDispatch(document, ".uno:FontHeight", "", 0, args3())


end sub
Freundliche Grüße Ulrich :roll:
Version: 7.5.5.2 Win10 Prof.

Mondblatt24
* LO-Experte *
Beiträge: 3378
Registriert: Fr 3. Mär 2017, 17:12

Re: Makro - wo ist der Fehler

Beitrag von Mondblatt24 » Fr 23. Aug 2019, 06:51

Hallo,
versuch es bei LibreOffice Programmierung.

Gruß Peter
Win 11 (x64) ▪ LO 25.8.1.1 (x64) ▪ AOO Portable 4.1.15
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Makro - wo ist der Fehler

Beitrag von craig » Fr 23. Aug 2019, 17:05

Hallo Ulrich,

das Aufzeichnen von Makros ist so eine Sache. Es gibt nicht für alles Dispatch-Commands
oder der Recorder kann diese nicht automatisch erfassen.
Deshalb habe ich mir das Programmieren beigebracht.

Und hier ein Makro auf Basis der LibO-API:

Code: Alles auswählen

REM  *****  BASIC  *****
' Erzwingt die Deklaration und korrekte schreibweise der Variablen
Option Explicit

Sub Courier12
' Deklaration der Variablen
Dim oDoc as Object			' Das Dokument-Object
Dim oSheet1 as Object		' Das Tabellenblatt-Object
Dim oCC as Object			' Das Object des CurrentControllers
Dim oSel as Object			' Das Object der gewünschten Selektion (Markierung)
Dim oCol as Object			' Das Spalten-Object
Dim oCell as Object			' Das Zellen-Object

	' Dokument Referenz
	oDoc=ThisComponent
		' Referenz CurrentController
		oCC = oDoc.getcurrentcontroller()
	
			' Referenz aktives Tabellenblatt
			oSheet1=oCC.Activesheet
				' Alle Zellen markieren
				oCC.select(oSheet1)
				
				' Referenz der aktuellen Markierung		
				oSel = oDoc.getCurrentSelection()

			' Die Eigenschaften für die aktuelle Markierung setzen
			With oSel
				.CharFontName="Courier New"
				.CharHeight="12"
				
				'https://www.openoffice.org/api/docs/common/ref/com/sun/star/awt/FontWeight.html
				' constants group FontWeight
				' Die Konstanten müssen in Großbuchtsaben angegeben werden!!!

				'DONTKNOW		The font weight is not specified/known.  
				'THIN			specifies a 50% font weight.  
				'ULTRALIGHT 	specifies a 60% font weight.  
				'LIGHT 			specifies a 75% font weight.  
				'SEMILIGHT		specifies a 90% font weight.  
				'NORMAL			specifies a normal font weight.  
				'SEMIBOLD		specifies a 110% font weight.  
				'BOLD			specifies a 150% font weight.  
				'ULTRABOLD		specifies a 175% font weight.  
				'BLACK			specifies a 200% font weight.  
				.CharWeight=com.sun.star.awt.FontWeight.NORMAL

			    'Text positionieren
			    'horijustify=1 <--	links
			    'horijustify=2 <--	mittig
			    'horijustify=3 <--	rechts
			    'horijustify=4 <--	nicht nur umbrochen --> Blocksatz
				.horijustify = 1	' linksbündig
				.IsTextWrapped = False 	'Kein Zeilenumbruch
				
			End with
			
	' Referenz: Spalten
    oCol = oSheet1.getColumns()
		' optimale Spaltenbreite
    	oCol.optimalWidth = true
		
		' Ein Zellobjekt referenzieren, in diesem Fall die Zelle "A1"	
		oCell =  oSheet1.getCellRangeByName("A1")
	  		' Cursor in Zelle "A1" setzen, damit wird gleichzeitig die Gesamtmarkierung aufgehoben.
			oCC.Select(oCell)
End Sub
Habe in den Code Kommentarzeilen eingefügt, so kannst Du Dich orientieren,
welche Aktion in welcher Zeile erfolgt.

@Peter
Peter hat geschrieben:versuch es bei LibreOffice Programmierung.
Aber wo wir gerade schon mal hier sind... ;)
Beim nächsten mal wird Ulrich Deinem Wunsch sicherlich berücksichtigen.
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

Mondblatt24
* LO-Experte *
Beiträge: 3378
Registriert: Fr 3. Mär 2017, 17:12

Re: Makro - wo ist der Fehler

Beitrag von Mondblatt24 » Fr 23. Aug 2019, 17:22

Hallo,
Aber wo wir gerade schon mal hier sind... ;)
Beim nächsten mal wird Ulrich Deinem Wunsch sicherlich berücksichtigen.
abwarten.


G Peter
Win 11 (x64) ▪ LO 25.8.1.1 (x64) ▪ AOO Portable 4.1.15
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten