BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!

DANKE >><< DANKE

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

Alle Spalten einblenden

Alles zur Programmierung im OpenOffice.org
Donna
Beiträge: 16
Registriert: Fr 14. Sep 2018, 18:58

Alle Spalten einblenden

Beitrag von Donna » Do 20. Sep 2018, 09:32

Guten Morgen zusammen,

nach erfolglosen Versuchen und Suchen nun meine Frage an Euch.

Wie kann ich mittels Makro alle ausgeblendeten Spalten wieder einblenden? Und optimal alle Filterungen entfernen!

Und warum funktioniert das mittels aufgezeichnetem Makro eigentlich nicht? Das habe ich des öfteren, dass aufgezeichnete Makros keine Wirkung haben.

Ich hoffe hier hat jemand eine Lösung.

Viele Grüße
Sonja

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: Alle Spalten einblenden

Beitrag von mikele » So 23. Sep 2018, 15:13

Hallo,
das folgende Makro blendet alle Spalten der 1. Tabelle ein:

Code: Alles auswählen

sub einblenden
	ThisComponent.Sheets(0).Columns.isVisible=true
end sub
Um Filterungen zu entfernen, wäre es wichtig zu wissen, welche Art Filter du einsetzt (Auto-, Standard-, Spezialfilter; mit benannten Bereichen, Datenbankbereiche ...)


Mit dem Makrorekorder wirst du im allgemeinen kein Glück haben, da er a) nicht alles aufzeichnet und b) nur auf die sogenannten Dispatcherbefehle zugreift. Diese sind zwar teilweise sehr mächtig (manches geht auch nur damit), aber häufig auch sehr umständlich.
Besser ist es auf das Objektmodell zuzugreifen, was aber wiederum mehr Programmierkenntnisse und Kenntnisse der Objektstruktur erfordert. Hier ist ein Objektinspektionstool wie XRay oder MRI unerlässlich. Im Prinzip sind die Informationen auch in der API zu finden, aber so lange ich mich damit auseinandersetze stochere ich nur blind darin herum ...
Gruß,
mikele

Donna
Beiträge: 16
Registriert: Fr 14. Sep 2018, 18:58

Re: Alle Spalten einblenden

Beitrag von Donna » Mo 24. Sep 2018, 14:47

Hallo Mikele,

diese VBA Code funktioniert leider nicht in OPEN OFFICE.

Viele Grüße
Sonja

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: Alle Spalten einblenden

Beitrag von mikele » Mo 24. Sep 2018, 16:20

Hallo Sonja,
es ist kein VBA. Allerdings habe ich es unter LibreOffice getestet (läuft). Ich probiere es nochmal unter AOO.
Gruß,
mikele

Donna
Beiträge: 16
Registriert: Fr 14. Sep 2018, 18:58

Re: Alle Spalten einblenden

Beitrag von Donna » Mo 24. Sep 2018, 18:40

Hallo Mikele,

super, vielen Dank.

Bei dem Filter handelt es sich um einen Autofilter in Zeile 2 Spalte A bis N. Der Filter soll bleiben nur die Auswahl soll wieder auf alles stehen.

Viele Grüße
Sonja

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: Alle Spalten einblenden

Beitrag von mikele » Mo 24. Sep 2018, 22:30

Hallo,
unter AOO 4.1.1 macht das Makro, was es soll: alle Spalten in der 1. Tabelle werden eingeblendet.
Welche Version nutzt du? Wie rufst du das Makro auf? Geht es eventuell um ein anderes Tabellenblatt?
Um einen Filter per Makro zu bearbeiten ist es sinnvollsten, den entsprechenden Zellbereich als Datenbankbereich festzulegen (Bereich markieren ->Daten->Bereich festlegen).
Dann reicht folgendes kurzes Makro:

Code: Alles auswählen

sub entfiltern
	oDoc=ThisComponent
	oDat=oDoc.DatabaseRanges(0)
	oFilter=oDat.getFilterDescriptor
	Dim aFilterFields()
	oFilter.setFilterFields(aFilterFields)
	oDat.ReferredCells.filter(oFilter)
end sub
Schau dir mal das Beispiel an.
Dateianhänge
makro_spalten zeilen einblenden.ods
(11.86 KiB) 254-mal heruntergeladen
Gruß,
mikele

Donna
Beiträge: 16
Registriert: Fr 14. Sep 2018, 18:58

Re: Alle Spalten einblenden

Beitrag von Donna » Di 25. Sep 2018, 07:24

Guten Morgen Mikele,

ich habe OpenOffice gerade erst installiert, gehe von der aktuellsten Version aus (muss ich heute Abend mal zu Hause nachsehen).

Filter entfernen und Spalten einblenden soll allerdings nicht auf Tabelle 1 sondern immer in dem aktuellen Registerblatt in dem ich mich gerade befinde (oder meintest Du das damit?). Ich habe ein Vorlagenblatt mit Button und hinterlegten Makros erstellt. Dieses kopiere ich dann und die Makros sollen dann auf dem Register ausgeführt werden.

Viele Grüße
Sonja

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: Alle Spalten einblenden

Beitrag von mikele » Di 25. Sep 2018, 07:58

Hallo,
kannst du deine Datei (ggf. verfremdet) hier zur Verfügung stellen? Es würde einiges vereinfachen.
Gruß,
mikele

Donna
Beiträge: 16
Registriert: Fr 14. Sep 2018, 18:58

Re: Alle Spalten einblenden

Beitrag von Donna » Di 9. Okt 2018, 17:07

Hallo Mikele,

nun bin ich endlich zum testen gekommen. Es klappt genau so, wie ich es mir vorgestellt habe. Eine einzige Kleinigkeit nur noch.

Ich habe verschiedene Register (unterschiedliche Namen und es können immer neue dazu kommen). In jedem Register habe ich mit Befehlsschaltfläche angelegt, welchen ich u.a. diese Makros zugeordnet habe. Die jeweiligen Makros sollen nun nicht auf das ERSTE Register wirken, sondern immer genau das, welche gerade AUSGEWÄHLT ist. Gerne ohne festen Namensbezug, da ich ja sonst immer neue Markos anlegen müsste. Hast Du da schnelle leichte Abhilfe?

Viele Grüße
Sonja

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: Alle Spalten einblenden

Beitrag von mikele » So 14. Okt 2018, 18:25

Hallo Donna,
Hast Du da schnelle leichte Abhilfe?
Das hängt davon ab, wie der Bereich, auf dem der Autofilter wirkt, festgelegt wurde. Leider ist es per Makro nicht möglich herauszufinden, auf welchen Bereich der Autofilter wirkt (man möge mich gern eines besseren belehren).
Daher sehe ich zwei Optionen:
1) Du legst auf jedem Tabellenblatt einen Datenbankbereich fest, der den gewünschten Bereich umfasst. (Wie bereits früher beschrieben - ist aufwändig, da die Datenbankbereiche stets neu festgelegt werden müssen, beim Kopieren von Blättern nicht mitkopiert werden)
2) (vielleicht die einfachere Variante) Der Autofilter wirkt auf jedem Tabellenblatt stets auf den gleichen Bereich, z. B. A2:N100. Dann ließe es sich auch ohne Datenbankbereiche programmieren.
Welche Variante bevorzugst du?
Gruß,
mikele

Antworten