üres oszlopok eltüntetése nyomtatáshoz

Táblázatkezelő
KLiFF
Hozzászólások: 2
Csatlakozott: 2015. február 10., kedd 13:41

üres oszlopok eltüntetése nyomtatáshoz

Hozzászólás Szerző: KLiFF »

Helló,
Fuvardíj táblázatból, hogyan lehet eltüntetni az üres oszlopokat, hogy csak azt nyomtassa ki amiben adat található. (ahol 0-át számolt ki azokat az oszlopokat kell eltüntetni)
Valami egyszerű megoldással, mert a manuális oszloponkénti elrejtés elég macerás.
mellékletben található az xls
köszönöm előre is.
Csatolmányok
fuvardíj.xlsx
(12.67 KiB) Letöltve 103 alkalommal.
libreoffice: 3.6.4.3 a windows 8
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: üres oszlopok eltüntetése nyomtatáshoz

Hozzászólás Szerző: Zizi64 »

Mi számít neked "üres oszlopnak...?
(Hiszen a fájlodban a kerettel rendelkező tartományban MINDEN oszlopban van (nullától eltérő) szám is, képlet is: tehát egyik sem üres.)
...Amelyikben 0 értékű valamelyik eredmény? Melyik eredmény? Amelyikben valamely sorokban nincs adat? Melyik sorokat kellene figyelni?

Biztos vagyok benne, hogy makróval le lehet "egyetlen kattintásosra" egyszerűsíteni a dolgot, de tisztázni kell, hogy mik a kritériumok, és hogy azok a kritériumok mennyire statikusak, vagy éppen mennyire dinamikusak...

De a makróval történő operáláshoz el kell döntened, hogy Open/LibreOffice-t, vagy MSExcelt akarsz-e használni... Ha az Open/LibreOffice-t választod, akkor Open/LibreOffice Basic-ben kell megírnod a makrót, és az csak abban tud majd futni. Ha a VBA áll hozzád közelebb, akkor használj MSExcelt, de az a makró csak az MSExcelben fog futni.
Ha pedig Open/LibreOffice-t használsz, akkor használd a programcsomag natív (alapértelmezett) szabványos ODF fájlformátumait.
Különben előbb-utóbb súlyos kompatibilitási problémába fogsz ütközni.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
KLiFF
Hozzászólások: 2
Csatlakozott: 2015. február 10., kedd 13:41

Re: üres oszlopok eltüntetése nyomtatáshoz

Hozzászólás Szerző: KLiFF »

Helló,
Akkor el is hasalt a dolog, makrót nem tudok írni. Ahol az eredmény 0 azokat az oszlopokat kellene eltüntetni.
ODF-ben is el tudom menteni, persze.
libreoffice: 3.6.4.3 a windows 8
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: üres oszlopok eltüntetése nyomtatáshoz

Hozzászólás Szerző: Zizi64 »

Akkor el is hasalt a dolog, makrót nem tudok írni.
Talán még a Kimutatástündér (Pivot tábla) használata segíthetne. De én meg azt nem használtam ezidáig...

(Ha valóban üresek lennének az oszlopok, akkor a nyomtatás paraméterei között talán meg lehetne adni, hogy azokat ne nyomtassa... De akkor tényleg egyetlen képlet, sőt egyetlen karakter sem lehetne abban az oszlopban.)
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: üres oszlopok eltüntetése nyomtatáshoz

Hozzászólás Szerző: Zizi64 »

Makrós megoldás:

Kód: Egész kijelölése

sub hide_columns

 dim document   as object
 dim dispatcher as object
 dim MyRange as object
 dim oCell as object
 dim actvalue as double
 dim nCol, i as integer

	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")   
	Myrange = ThisComponent.NamedRanges.getByName("Eredmény").ReferredCells
	nCol = Myrange.Columns.Count	
	For i = 0 to nCol-1
		oCell = MyRange.getCellByPosition(i,0)
		actvalue = oCell.value
		if actvalue = 0 then
			ThisComponent.CurrentController.select(oCell) 
			dispatcher.executeDispatch(document, ".uno:HideColumn", "", 0, Array())
		end if
	next i	
End sub


Sub show_columns

 dim document   as object
 dim dispatcher as object
 dim MyRange as object
 dim actvalue as double
 
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")   
	Myrange = ThisComponent.NamedRanges.getByName("Eredmény").ReferredCells
	ThisComponent.CurrentController.select(Myrange) 
	dispatcher.executeDispatch(document, ".uno:ShowColumn", "", 0, Array())
	
End sub
Itt a mintafájlod, van az A2 cellában két gomb azzal tudod "lefogyasztani" a táblát a nullától eltérő eredményértékek oszlopaira, illetve újra megjeleníteni az eltüntetett oszlopokat.

A megoldás bizonyos fokig rugalmas csak, tudsz a sárga "Eredmény" sor elé újabb sorokat beszúrni, de a névvel rendelkező tartománynak természetesen mindig léteznie kell a makró zökkenőmentes futásához!

A makró egy része (a lényeg) a Diszpécser szolgáltatásait, nagyobbik része az API függvényeit használja.
Hide_columns.ods
(37.63 KiB) Letöltve 98 alkalommal.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Válasz küldése