Zeilen ausblenden per makro

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

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeilen ausblenden per makro

Beitrag von komma4 »

Hilft Dir das?

Code: Alles auswählen

Sub loescheTxtTabZeileWennSpalteA0

oTxtTab = ThisComponent.getTextTables().getByName( "Tabelle7" )

For i = oTxtTab.Rows.Count to 1 Step -1

	If oTxtTab.getCellByPosition( 0, i-1 ).Value = 0 Then
	   oTxtTab.getRows().removeByIndex( i-1, 1 )
	End If

Next i

End Sub
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeilen ausblenden per makro

Beitrag von komma4 »

Es gibt bei einer Texttabelle kein "Ausblenden" von Zeilen.

Ich habe den Verdacht, dass irgendwie Dein Design "nicht das Wahre" ist.

Verstanden habe ich, dass Du Positionen anhand der Checkboxen auf eins setzen möchtest. Zum Ausdrucken (PDF-Export) sollen dann die Zeilen mit "Menge = 0" verschwinden. Das leistet das zuletzt gepostete Makro - rufe es vor Druck/PDF-Export auf. Eine Automatik mit Ein-/Ausblenden von Zeilen geht nur mit einem erhöhten Aufwand. Und: die Schaltflächen "wissen" nichts von ihrer Positionierung in einer Tabelle (kein Bezug zur Zeile).
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeilen ausblenden per makro

Beitrag von komma4 »

Das i ist der Zähler der Schleife: gesetzt durch die Anzahl der Zeilen, in der Schleife (da als Index gebraucht) um eins vermindert. Die Schleife selbst zählt rückwärts, damit der Zeiger sonst (aufwärts gezählt) nach einem Löschen durcheinander kommt.

Und bei meinen Tests werden nur die Zeilen gelöscht, die eine Null in SpalteA haben (gesetzt durch Umschalten der Checkboxen).

Du könntest das Löschen-Makro beim Dokument dann (wenn es auch bei Dir funktioniert) an das Extras>Anpassen>Ereignis Dokument drucken hängen.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeilen ausblenden per makro

Beitrag von komma4 »

Die Checkboxen haben eine Eigenschaft "Drucken", die auf NEIN gesetzt werden kann (im Entwurfsmodus).


.
.
.
.
.
.
.
.
.
.
Ja, das musst Du nicht bei allen nachträglich ändern, sondern Du kannst es auch per Makro setzen:

Code: Alles auswählen

' 2008-11-12
Sub de20775

' alle Kontrollelemente sind in einer Form einer DrawPage
oForm = ThisComponent.Drawpage.Forms(0)

' alle Namen der Kontrollelemente
aNamen = oForm.ElementNames() 

' alle bearbeiten
For i = 0 to UBound( aNamen() )
   oForm.getByName( aNamen( i ) ).Printable = FALSE  
Next i 

End Sub
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeilen ausblenden per makro

Beitrag von komma4 »

MFG hat geschrieben:nur hab ich schon wie nen blöder gesucht, aber kein makro zum pdf erzeugen gefunden
???
Nach was suchst Du denn? PDF und EXPORT als Suchbegriffe hier im Forum ergibt schon 41 Treffer, bspw. Makro Wasserzeichen
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeilen ausblenden per makro

Beitrag von komma4 »

MFG hat geschrieben:dann das dokument geschlossen wird, ohne speichern und ohne nachfrage, ob das nun geänderte dokument nochmal gespeichert werden soll
Schliessen ohne Nachfrage
ThisComponent.dispose()

Ein Kollege meinte gerade, dass sei hässlich, besser wäre:
ThisComponent.Modified = FALSE
ThisComponent.Close( TRUE )


Ein Unterschied habe ich bislang nicht feststellen können.


Mit "MUSTER" meinst Du: Wasserzeichen? Siehe den zuvor geposteten Link zum "Makro Wasserzeichen"
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Re: Zeilen ausblenden per makro

Beitrag von Karolus »

Hallo
Trag einfach in einem der 4 subs die Namen der anderen 3 an passender Stelle ein.
(Ein Name pro Zeile)
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeilen ausblenden per makro

Beitrag von komma4 »

Der Makro-Recorder zeichnet unvollständig auf...!

In Abwandlung des Makros zum Setzen einer Hintergrundgrafik, hier die Version zum Entfernen solcher Grafiken:

Code: Alles auswählen

    ThisComponent.getStyleFamilies().getByName( "PageStyles" )

    for i = 0 to oDokPageStyles.Count - 1
       oStyle = oDokPageStyles.getByIndex( i )
       if oStyle.isInUse() then
          if oStyle.BackGraphicURL > "" Then
             oStyle.BackGraphicURL = ""
          end if     
       end if
    next
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeilen ausblenden per makro

Beitrag von komma4 »

Im zuletzt kopierten Codefragment fehlte die Zuweisung, korrekt wäre gewesen:

Code: Alles auswählen

oDokPageStyles = _
   ThisComponent.getStyleFamilies().getByName( "PageStyles" )

Zu Deiner letzten Frage: follow the link in meinem footer, dann solltest Du das auch rausfinden können :-)
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeilen ausblenden per makro

Beitrag von komma4 »

MFG hat geschrieben:mehr und in der gesamt-zelle steht: =sum<Table8.C1:?> und damit kanner nich rechnen
Dann erstelle die Formel neu und setze sie in die Zelle: die Gesamtanzahl von Zeilen nach dem Löschen bekommst Du wieder über oTxtTab.Rows.getCount()
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeilen ausblenden per makro

Beitrag von komma4 »

Na, etwa so:

Code: Alles auswählen

sFormel = "=sum<table8.E1:E" & Evariable & ">"
ThisComponent.getTextTables().getByName( "Tabelle8").getCellByPosition( spalte, zeile ).Formula = sFormel
spalte, zeile weisst nur Du
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeilen ausblenden per makro

Beitrag von komma4 »

Bei Makros gibt es keine Schönheitspreis ... wenn's funktioniert...

Viel Spass noch mit OOo!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Antworten