Makro: Vom Nutzer markierte Spalten ausblenden.

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Acki
Beiträge: 3
Registriert: Mi, 11.03.2015 11:21

Makro: Vom Nutzer markierte Spalten ausblenden.

Beitrag von Acki »

Hallo allerseits,

ich habe mich jezt einfach mal hier angemeldet, weil ich mit meinem (schier einfachen) Problem zu verzweifeln drohe. Suchfunktion und Google konnten mir nicht helfen. Könnt Ihr euch das bitte mal ansehen?

Es geht um ein Tabellendokument. Dieses enthält ca 40 Spalten..

Jetzt habe ich mir einen Button erstellt, der beim Klick die Spalten, in der der Nutzer Zellen selektiert hat, ausblenden soll. (Welche das sind, ist nirgendwo festgeschrieben, es hängt allein von der Selektion des Nutzers ab). Leider funktioniert der Button nur, wenn eine Zelle in einer einzigen Spalte markiert ist. Sobald ich mehrere nebeneinanderliegende Zellen markiere und den Button klicke, erhalte ich die folgende Fehlermeldung:

"Eigenschaft oder Methode nicht gefunden: getCellAddress."

Mein Makro sieht wie folgt aus:

Code: Alles auswählen

Sub Ausblenden

oDoc=thisComponent
oCelle=oDoc.getCurrentSelection().getCellAddress()
oColumn=oCelle.column

' Die ersten beiden Spalten dienen der Orientierung und Wichtung und sollen nicht ausgeblendet werden

if oColumn > 1 then
		oDoc.sheets.getbyname("Tabelle1").columns(oColumn).isvisible = false
else
endif

End Sub

Meine Fragen sind:

1. Wie muss ich das Makro umschreiben, sodass ich mehrere Spalten über meinen Buttton anhand darin markierter Zellen ausblenden kann?
2. Wo finde ich im Internet eine API für die Makroprogrammierung, in der Methoden, Parameter und ihre Funktion/Bedeutung beschrieben sind? Über Google konnte ich nichts finden :(

Danke Euch!

VG Acki
Zuletzt geändert von Acki am Mi, 11.03.2015 12:24, insgesamt 1-mal geändert.
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro: Vom Nutzer markierte Spalten ausblenden.

Beitrag von Karolus »

Hallo

Gegenfrage:
Wieso muss man dafür einen Button nebst Makro kreieren, wenn man das gleiche Ergebnis mit
→Rechtsklick Spaltenkopf→Ausblenden erreicht?

Irgendwie sehe ich da nur Zusatzkosten ohne Zusatznutzen

zu 2.): Benutze MRI
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Acki
Beiträge: 3
Registriert: Mi, 11.03.2015 11:21

Re: Makro: Vom Nutzer markierte Spalten ausblenden.

Beitrag von Acki »

Hallo Karolus,

danke für Dein schnelles Feedback.

sicher könnte man das auch über den von Dir beschriebenen Weg erreichen. Allerdings wird der Nutzer diese Funktion im Laufe seiner Arbeit mit dem Dokument immer wieder benutzen und schrittweise immer mehr ausblenden. Dabei möchte ich ihm nicht zumuten, jedesmal ins Menü zu gehen, um den gleichen Menüpunkt wieder auszuführen. Mich als Nutzer würde das nerven, dafür fände ich einen Button viel bequemer.

edit: Ich Depp! Ich hab den "Rechtsklick" überlesen. Ok, so gehts natürlich auch :)
Zuletzt geändert von Acki am Mi, 11.03.2015 12:39, insgesamt 1-mal geändert.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro: Vom Nutzer markierte Spalten ausblenden.

Beitrag von Stephan »

2. Wo finde ich im Internet eine API für die Makroprogrammierung, in der Methoden, Parameter und ihre Funktion/Bedeutung beschrieben sind? Über Google konnte ich nichts finden
siehe:
http://www.openoffice.org/api/docs/comm ... le-ix.html


Gruß
Stephan
Acki
Beiträge: 3
Registriert: Mi, 11.03.2015 11:21

Re: Makro: Vom Nutzer markierte Spalten ausblenden.

Beitrag von Acki »

Cooles Teil! Genau das, was ich vorhin gesucht habe. Danke Stephan.
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makro: Vom Nutzer markierte Spalten ausblenden.

Beitrag von clag »

Hallo Acki,

man kann das problemelos aufzeichnen

Code: Alles auswählen

sub HideSelectetColumns
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:HideColumn", "", 0, Array())


end sub
selektiere irgendeine Zelle, Starte die Makroaufzeichnung und drücke folgende Tasten
alt f p a
Makrobaufzeichnung beenden unter beliebigem Namen speichern.
Das Makro wird dann alle Spalten ausblenden in denen Zellen makiert ist.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten