[SOLVED] Pominięcie wiersza na wydruku

Użytkowanie arkusza kalkulacyjnego
12345
Posty: 8
Rejestracja: pn lut 11, 2013 12:20 pm

[SOLVED] Pominięcie wiersza na wydruku

Post autor: 12345 »

Witam, mam dokument który posiada 14 wierszy zaczynających się w komórce A19. Zależy mi na tym aby program pomijał te wiersze, jeżeli nie są one wypełnione, na wydruku oraz przy eksportowaniu do pdfa. Przykładowo jest wypełnionych 5 wierszy od A19 do A24, reszta wierszy niewypełnionych pozostaje niewidoczna.
Ostatnio zmieniony czw lut 21, 2013 9:46 am przez 12345, łącznie zmieniany 1 raz.
OpenOffice 3.4.1 XP
12345
Posty: 8
Rejestracja: pn lut 11, 2013 12:20 pm

Re: Pominięcie wiersza na wydruku

Post autor: 12345 »

Witam ponownie, w załączniku znajdują się pliki obrazujące z czym mam problem.
Zależy mi aby program ukrył wiersz który w komórce obok (kolumnie A) nie ma wpisanej cyfry, bądź pokazał jeżeli cyfra się tam pojawi. Dodam że w komórkach LP jest już wpisana funkcja PODSTAW i jest zależna od innej tabeli.
Załączniki
2.JPG
2.JPG (4.77 KiB) Przejrzano 7862 razy
1.JPG
1.JPG (10.15 KiB) Przejrzano 7862 razy
OpenOffice 3.4.1 XP
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Pominięcie wiersza na wydruku

Post autor: Jan_J »

We właściwościach stylów komórek (Format → Komórka → Ochrona → Wydruk oraz F11 → Style komórek → ppm: Modyfikuj → ...) możesz wybrać [x] Ukryj na wydruku.
Zrób nowy styl komórek Pomiń, tak by miał ustawioną tę właściwość.
Dla wiersza, który chcesz pominąć, ustaw Formatowanie warunkowe z odpowiednim warunkiem, którego spełnienie wymusi zastosowanie stylu Pomiń.
Alternatywna metoda polegałaby na użyciu funkcji STYL() w wyrażeniu warunkowym, ale ten sposób dotyczy tylko komórek z formułami, i na dodatek wymaga modyfikacji formuł.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
12345
Posty: 8
Rejestracja: pn lut 11, 2013 12:20 pm

Re: Pominięcie wiersza na wydruku

Post autor: 12345 »

Niestety brak takich opcji w moim OpenOffice 3.4.1, mogę ukryć komórkę czy wiersz na wydruku ale pozostaje ona pusta a nie ukryta.
OpenOffice 3.4.1 XP
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Pominięcie wiersza na wydruku

Post autor: Jan_J »

Bo to tak działa. Arkusz nie jest generatorem dokumentów o dowolnym układzie. Wysokość jest atrybutem wiersza, a nie komórki. Ustawienie wysokości na zero za pośrednictwem rozwiązań typu Formatowanie warunkowe albo ustawienie stylu jest więc nawet w teorii niewykonalne.

Możesz natomiast oprogramować (nawet formułami) przygotowanie obszaru wydruku, który by spełniał Twoje wymagania, ale dane pobierałby z komórek niesformatowanych (lub sformatowanych “niezobowiązująco”).
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
12345
Posty: 8
Rejestracja: pn lut 11, 2013 12:20 pm

Re: Pominięcie wiersza na wydruku

Post autor: 12345 »

Wygląda na to że mój problem rozwiązałoby takie makro jak w tym przypadku http://www.excelforum.pl/topics3/makro- ... vt6071.htm. Jednak nie wiem jak takie makro napisać w OpenOffice.
OpenOffice 3.4.1 XP
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Pominięcie wiersza na wydruku

Post autor: Jan_J »

W LO 4.0 to makro prawie działa. Prawie, bo topornie i powoli, i nie sczytuje właściwości Value z przycisku.
Przykro mi, ale niestety nie mam teraz czasu, żeby zajmować się podobnymi robótkami.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Pominięcie wiersza na wydruku

Post autor: belstar »

Zmodyfikowałem to makro tak żeby tylko działało w Calcu. Do pełni szczęścia wymaga pozbycia się wywołań VBA z Excela. Jak ci to nie wystarcza to napisz, w wolnej chwili pomogę.
Załączniki
ukrywanie wierszy.ods
(15.92 KiB) Pobrany 374 razy
LibreOffice 5.1.2.2 Ubuntu 16 LTS
12345
Posty: 8
Rejestracja: pn lut 11, 2013 12:20 pm

Re: Pominięcie wiersza na wydruku

Post autor: 12345 »

Dzięki, działa. Pozwoliłem sobie trochę zmienić makro pod siebie zmieniając jedynie kolumnę na 1 i dodając spację w definiowaniu komórki - gdyż wcześniej formułę w komórce traktowało jako komórkę wypełnioną.
Jeszcze tylko jedno "ale" przycisk obsługujący makro znajduje się w innym arkuszu ("Zmienne") niż tabela która znajduje się w arkuszu "Oferta". Co muszę dodać by to działało?
OpenOffice 3.4.1 XP
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Pominięcie wiersza na wydruku

Post autor: belstar »

Masz tu przerobione makro już bez Excelowych instrukcji. Przycisk możesz wstawić w jakim chcesz arkuszu. Do przycisku przypisz to makro (ukrywane są wiersze z arkusza Oferta testowana jest kolumna A.

Kod: Zaznacz cały

Sub ukryj_pokaz(oEv)

Dim Doc As Object
Dim Sheet As Object
 
Doc = ThisComponent
Sheet = Doc.Sheets.getByName("Oferta")
koniec = getCountA(Sheet)
Etyk = oEv.source.model.Label
For i = 0 To koniec - 1
If Sheet.getCellByPosition(1, i).String = "" Then
   If Etyk = "Ukryj" Then
    Wiersz = Sheet.Rows().getByIndex(i)
    Wiersz.IsVisible = false
   ElseIf Etyk ="Pokaż" Then
     Sheet.getRows.getByIndex(i).IsVisible = true
   End If
End If
Next i
	if oEv.source.model.Label = "Ukryj" then
		oEv.source.model.Label = "Pokaż"
	Else
		oEv.source.model.Label = "Ukryj"
	End If
End Sub
Function getCountA(Arkusz)
	oFunct = createUnoService( "com.sun.star.sheet.FunctionAccess" )
	oRange = arkusz.getCellRangeByName("A1:A5000")
	getCountA = oFunct.callFunction("COUNTA" , ARRAY(oRange)) 
End Function
LibreOffice 5.1.2.2 Ubuntu 16 LTS
12345
Posty: 8
Rejestracja: pn lut 11, 2013 12:20 pm

Re: Pominięcie wiersza na wydruku

Post autor: 12345 »

Dzięki, u mnie działa z tym że z małą zmianą.

Kod: Zaznacz cały

Sub ukryj_pokaz(oEv)

Dim Doc As Object
Dim Sheet As Object

Doc = ThisComponent
Sheet = Doc.Sheets.getByName("Oferta")
koniec = getCountA(Sheet)
Etyk = oEv.source.model.Label
For i = 0 To koniec - 1
If Sheet.getCellByPosition(0, i).String = " " Then
   If Etyk = "Ukryj" Then
    Wiersz = Sheet.Rows().getByIndex(i)
    Wiersz.IsVisible = false
   ElseIf Etyk ="Pokaż" Then
     Sheet.getRows.getByIndex(i).IsVisible = true
   End If
End If
Next i
   if oEv.source.model.Label = "Ukryj" then
      oEv.source.model.Label = "Pokaż"
   Else
      oEv.source.model.Label = "Ukryj"
   End If
End Sub
Function getCountA(Arkusz)
   oFunct = createUnoService( "com.sun.star.sheet.FunctionAccess" )
   oRange = arkusz.getCellRangeByName("A1:A5000")
   getCountA = oFunct.callFunction("COUNTA" , ARRAY(oRange))
End Function
OpenOffice 3.4.1 XP
ODPOWIEDZ