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
🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!
>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
Makro - wo ist der Fehler
-
LibreUser321
- 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.
-
Mondblatt24
- * LO-Experte *
- Beiträge: 3585
- Registriert: Fr 3. Mär 2017, 17:12
Re: Makro - wo ist der Fehler
Win 11 (x64) ▪ LO 26.2.3.2 (x64) ▪ AOO Portable 4.1.16
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 Subwelche 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
-
Mondblatt24
- * LO-Experte *
- Beiträge: 3585
- 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 26.2.3.2 (x64) ▪ AOO Portable 4.1.16
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:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️