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
❤️ 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. 🌱
>> 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
-
- Beiträge: 22
- Registriert: Mi 21. Aug 2019, 09:56
Makro - wo ist der Fehler
Freundliche Grüße Ulrich
Version: 7.5.5.2 Win10 Prof.

Version: 7.5.5.2 Win10 Prof.
-
- * LO-Experte *
- Beiträge: 3378
- Registriert: Fr 3. Mär 2017, 17:12
Re: Makro - wo ist der Fehler
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.
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.
Re: Makro - wo ist der Fehler
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:
Habe in den Code Kommentarzeilen eingefügt, so kannst Du Dich orientieren,
welche Aktion in welcher Zeile erfolgt.
@Peter
Beim nächsten mal wird Ulrich Deinem Wunsch sicherlich berücksichtigen.
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
welche Aktion in welcher Zeile erfolgt.
@Peter
Aber wo wir gerade schon mal hier sind...Peter hat geschrieben:versuch es bei LibreOffice Programmierung.

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
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
-
- * LO-Experte *
- Beiträge: 3378
- Registriert: Fr 3. Mär 2017, 17:12
Re: Makro - wo ist der Fehler
Hallo,
G Peter
abwarten.Aber wo wir gerade schon mal hier sind...
Beim nächsten mal wird Ulrich Deinem Wunsch sicherlich berücksichtigen.
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.
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.