< návrat zpět

MS Excel


Téma: Automatická oblast tisku rss

Zaslal/a 2.4.2013 14:23

Dobrý den,

v Excelu mám na několika listech připravené formuláře k vytištění, které mají určitý vzhled a obsah se do nich přenáší z jiných listů. Potřeboval bych vymyslet to, aby mi excel vytisknul jen vyplněné (neprázdné) formuláře.
V sešitu, který přikládám jako ukázku, reprezentuje každá strana A4 jeden měsíc pracovního výkazu. Dělníci mají odpracováno do dubna, čili květen a dál je prázdný a tisknout jej nepotřebuji. Na listu1 jsou muži, na listu2 ženy. Existuje možnost, jak to zautomatizovat tak, že spustím nějaké makro a excel vytiskne jen vyplněné formuláře?
Předem děkuji za pomoc.

Příloha: zip12643_priklad1.zip (23kB, staženo 37x)
Zaslat odpověď >

#012644
avatar
Ještě jsem zapoměl upřesnit (i když je to možná jasné), že i když není formulář úplně plný, vždy se vytiskne celý. Například můj ukázkový formulář je na max. 41 jmen, ale v lednu je zde jen 12 jmen. Vytiskne se kompletní A4 formulář za leden se dvanácti jmény, ostatní řádky budou prázdné. Podobně to bude se všemi nepráznými formuláři až do května, který už není vyplněný a tisknout se nebude.citovat
icon #012646
eLCHa
Mno - asi by šlo
Ale nejdříve se zamyslete, zda nestačí:

Nastavte si Zobrazit konce stránek (vpravo dole vedle lupy)
A vložte si konce stránek.

A pak při tisku používejte tisknout od strany do strany
Budete schopen, opravit si to i sámcitovat
#012650
avatar
eLCHa: Děkuji za tip. Pokud jsem to dobře pochopil, navrhujete, abych si to tisknul jakože ručně sám. Tzn. podíval se, které stránky jsou vyplněné a při tisku zvolil jen ty vyplněné stránky pomocí "od - do".
To bych samozřejmě zvládnul, ale můj dotaz byl směřován k tomu, abych to právě takto dělat nemusel. Ten příklad, který jsem tu uvedl ve vzorovém sešitu, je opravdu jen příklad, ve skutečnosti mám těch formulářů a listů mnohem více. Když je budu tisknout ručně, samozřejmě, že to půjde, ale hrozně se mi tím protáhne čas - ruční vybírání stránek a jejich tištění mi zabere půl hodiny. Chtěl bych po excelu, aby to udělal za mě - je to rutina a bylo by hezké, kdyby to excel uměl sám.citovat
#012654
Jeza.m
Jeden takový rychlopokus v příloze.
Public Sub TISK()
Dim l As String
Dim rds As Single

For sex = 1 To 2
If sex = 1 Then l = "Muži"
If sex = 2 Then l = "Ženy"
For rd = 2 To Sheets(l).UsedRange.Rows.Count
If Sheets(l).Cells(rd, 1) = "Měsíc:" Then rds = rd - 1
If Sheets(l).Cells(rd, 1) = "Celkem" Then
If Sheets(l).Cells(rd, 2) > 0 Then
Sheets(l).Range("A" & rds & ":E" & rd + 2).PrintOut
End If
End If
Next rd
Next sex
End Sub

M@
Příloha: zip12654_priklad1.zip (21kB, staženo 72x)
citovat
#012662
avatar
Jeza.m - Skvělá práce, děkuji moc! Chlapi vy tady na fóru jste neskuteční - se vším si umíte poradit.

Ještě moc nerozumím VBA, ale podívám se na to, abych pochopil minimálně jednotlivé kroky v tomto příkladu.

Díky ještě jednou!

Edit:
Trošku jsem to pobral a je to geniální řešení. Pomocí něj definujeme rozsah buněk od sloupce A až do sloupce E a příslušného počtu řádků, které mají být vytištěny. Ale jak by se program musel změnit, aby fungovalo to, že mám vyplněný např. jen Leden, Březen, Duben a tím pádem nechci vytisknout Únor? Šlo by to udělat?

Asi nejvíc by mi vyhovovalo, kdyby někde v buňce na začátku každé strany formuláře a ve sloupci, který se netiskne (např. F4, F53, F102 apod.) mohl být nějaký příznak (např. 0 nebo 1) daný podmínkou, na jehož základě by program věděl, kterou oblast vytisknout.citovat
#012738
avatar
Šlo by to teda?citovat
#012743
Opičák
Zkusil bych to třeba tak,
- načíst oblasti tisku do pole
oblastTisku(1,1) = od (číslo řádku)
oblastTisku(1,2) = do (číslo řádku)
a vyhodnotit, jestli daná oblast obsahuje alespoň první záznam, když ne tak
oblastTisku(1,3) = False
a netiskne se

to už je třeba dále ošetřit a pracovat s polem OblastTisku
Příloha: zip12743_oblast-tisku.zip (38kB, staženo 57x)
citovat
#012778
Jeza.m
Ještě jednou jsem se podíval do toho makra jenž jsem posílal a ono to tak funguje, jamile máš odpracováno Celkem = 0, tak se daný měsíc nevytiskne, takže pokud si v Únoru vynuluješ odpracované hodiny sloupec B, tak ho to nevytiskne.

Nebo to špatně chápu? :-)

M@citovat
#012953
avatar
Jeza.m > ne, chápeš to dobře. To já jsem to popletl. Ono to funguje přesně tak, jak má.
Děkuju a tento problém je tedy uzavřen.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse