Seite 1 von 1

LO6 breite mehrerer spalten per makro ändern

Verfasst: Sa 5. Jan 2019, 00:10
von gorgonz
Ich möchte mehreren Spalten (die nicht hintereinander liegen) eine neue Breite geben.

Kann mir da jemand weiterhelfen? Eigentlich sollte es einfach sein, aber ich komme mit LO BASIC immer noch nicht zurecht.

Hab erst mal ein Makro aufgezeichnet und darin den Befehl für die Spaltenbreite vorgefunden, es fehlt aber der Code, um erstmal Spalten auszuwählen, hier mal die Aufzeichnung zu einer Spalte:

Code: Alles auswählen

sub Spaltenbreite
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 ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ColumnWidth"
args1(0).Value = 2000

dispatcher.executeDispatch(document, ".uno:ColumnWidth", "", 0, args1())
end sub
Habt ihr eine Idee für mich?

Vorab schon mal vielen Dank für Tipps dazu :-)

Re: LO6 breite mehrerer spalten per makro ändern

Verfasst: Sa 5. Jan 2019, 13:44
von mikele
Hallo,
Ideen gibt es sicher viele.
Hier mal eine Variante:

Code: Alles auswählen

Sub spaltenbreite
	'Zugriff auf das Dokument
	oDoc=ThisComponent
	'Zugriff auf das 1. Tabellenblatt, interne Zählung beginnt bei 0!
	oTab=oDoc.sheets(0)
	'Festlegung der Spalten die geändert werden sollen in einem Array
	aSp=Array(1,3,4,7,9)
	'Durchlauf durch das Array
	for i=0 to ubound(aSp)
		oTab.Columns(aSp(i)).width=2000
	next
End Sub
Mehr Informationen findest du z. B. hier: http://www.dannenhoefer.de/faqstarbasic ... reife.html

Re: LO6 breite mehrerer spalten per makro ändern

Verfasst: Sa 5. Jan 2019, 17:59
von gorgonz
Wunderbar Mikele, vielen Dank, das hat auf Anhieb funktioniert und mir sehr geholfen :-)

Ich würde ja gerne lernen, besser damit umzugehen, aber das "Objektmodell" ist so undurchsichtig für mich, dass ich bei jeder Aufgabe nicht weiß, über welchen Objekt-Weg ich "navigieren" soll, um das Gewünschte zu erreichen.

Nur mal so nebenbei gefragt: so was wie eine IDE, die einem nach Eingabe eines "." Vorschläge macht, welche Methoden oder Properties jetzt möglich sind, gibt es das?

Noch einer: Habe versucht, in Writer rudimentär aufzuschreiben, welches Objekt was anbietet. Dabei gemerkt, wenn ich zB "Shee" eingebe, dann wird mir als Tooltipp "Sheet.columns" vorgeschlagen oder bei "Sheets" der ToolTipp "Sheets.getByIndex". Irgendwas scheint da schon zu existieren. Ist das bei euch auch so?

Re: LO6 breite mehrerer spalten per makro ändern

Verfasst: So 6. Jan 2019, 12:18
von mikele
Hallo,
neben den verschiedenen Quellen (siehe hier: https://de.openoffice.info/viewtopic.php?f=18&t=1553) ist es praktisch unerlässlich einen Objektinspektor zu installieren, der dir genau das liefert: welche Eigenschaften/Methoden unterstützt das Objekt.
Ich persönlich nutze MRI: https://extensions.openoffice.org/de/pr ... ction-tool
Alternativ XRAY: http://berma.pagesperso-orange.fr/index2.html