Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno EXCEL 2007 - jak pomocí VBA vytisknout aktivní řádek na jehličkovou tiskárnu a ..

Pomozte někdo, kdo se vyznáte v excelu, jak vytisknout aktivní řádek po změně ve sloupci 3.

Podle tohoto odkazu http://gymzv.sk/~vyuka/informatika/excel/excelentn e/chipex05/09/excel_vba_udalosti.html (díky MachR55)
se dá zajistit, aby událost vložení něčeho do třetího sloupce spustila něco.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Oblast As Range

'definice sledované oblasti
Set Oblast = Range("C1:C1000")

'test výběru
If Union(Oblast, Target).Address = Oblast.Address Then
MsgBox "Změněna hodnota v buňce " & Target.Address(0, 0)
End If

End Sub

Jaký kód vložený mezi if a endif zajistí, aby se vytiskly první tři buňky (sloupce) aktuálního řádku?
A jakmile se něco změní v dalším řádku ve sloupci tři, ať se vytisknou zase první tři buňky (sloupce) v tomto dalším řádku pod.

Předmět Autor Datum
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oblast As Range 'definice sledované oblasti…
robert13 20.07.2015 10:48
robert13
Ne, teď to odstránkuje. Právě bych potřeboval, aby se vytiskl jen řádek, neodstránkovalo, a při změn…
lk1 20.07.2015 11:06
lk1
...dávkové dotláčanie na ten istý papier neovládam, ale tuším som tu videl vlákno, ktoré sa tým zaob…
robert13 20.07.2015 11:12
robert13
Tisknout bez odstránkování bude asi problém - nikde v nastaveních metody PrintOut potlačení odstránk…
MachR55 20.07.2015 11:40
MachR55
Odsledovať počet riadkov (v náväznosti na nastavenie strany) pre vhodný moment povelu na vytlačenie…
robert13 20.07.2015 11:55
robert13
Jo, máš pravdu, dočasný soubor není potřeba. Pro autora dotazu: Co jsem zjistil (a je to logické),…
MachR55 20.07.2015 12:22
MachR55
Hmm, tisk přímo na tiskárnu prostě nefunguje v téhle konfiguraci s tím kabelem jak je v původním dot…
lk1 20.07.2015 13:12
lk1
Nešlo by třeba tisknout přes nějaký formulář, který by byl dlouhý třeba jen jeden nebo dva řádky? Pa…
lk1 20.07.2015 14:06
lk1
to som nejak nepochopil... t.j. vytlačiť predsa len jednotlivý (zmenený) záznam po každej zmene? Z ú…
robert13 20.07.2015 15:46
robert13
Vše souvisí s tím, že dnes jsou všechny programy, ovladače i samotný systém stavěny na stránkový tis…
MachR55 21.07.2015 06:46
MachR55
Ja som jeho predoslu odpoved pochopil tak, ze pokial ta zmena bude vytlacena vo forme nejakeho formu…
robert13 21.07.2015 07:23
robert13
Asi máš pravdu, asi jsi to pochopil lépe...
MachR55 21.07.2015 07:27
MachR55
To znelo trochu ironicky, ja som to pisal s cielom bavit sa i s Tebou o moznostiach a ako to vidis T…
robert13 21.07.2015 07:52
robert13
Ne, promiň, to jsi opravdu pochopil špatně, rozhodně jsem to nemyslel ironicky. Mě prostě nedocvaklo…
MachR55 21.07.2015 08:01
MachR55
:beer:
robert13 21.07.2015 08:05
robert13
Tak asi vyřešeno, excel jsem pustil k vodě, natáhnu si to do něj z texťáku pozdějc. Vyhrabal jsem st… poslední
lk1 21.07.2015 14:56
lk1
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Oblast As Range

 'definice sledované oblasti
 Set Oblast = Range("C1:C1000")

 'test výběru
 If Union(Oblast, Target).Address = Oblast.Address Then
    MsgBox "Změněna hodnota v buňce " & Target.Address(0, 0)
    ActiveSheet.Range("A" & Target.Row & ":C" & Target.Row).PrintOut Copies:=1
 End If

End Sub

takto si to myslel?
Avšak pozor, zmena je aj zmazanie, t.j. ak zmažeš napr. bunku C5, vytlačia sa bunky A5 až C5, pričom C5 je prázdna...

Ne, teď to odstránkuje.
Právě bych potřeboval, aby se vytiskl jen řádek, neodstránkovalo, a při změně ve třetím sloupci na dalším řádku aby se zase vytiskly tři čísla vedle sebe na další řádek pod to.
A pořád dál.
Bez odstránkování.

Tisknout bez odstránkování bude asi problém - nikde v nastaveních metody PrintOut potlačení odstránkování nevidím. Zkoušel jsem i zagooglit, ale taky marně...
Osobně bych to řešil asi vytvářením pomocného TXT souboru s počítáním kolik řádků už tam je uloženo a při dosažení celé stránky bych ten soubor vytiskl. Samozřejmě by tam muselo být i nějaké tlačítko na vytištění, pokud by se skončila práce před dosažením konce stránky, nebo by se ten zbytek vytiskl automaticky před zavřením souboru.

Jen drobnou poznámku - tuhle část kódu:

Dim Oblast As Range

'definice sledované oblasti
Set Oblast = Range("C1:C1000")

bych někam odšoupl (třeba do procedury vykonávané při otevření sešitu - Workbook_Open) a proměnnou Oblast bych nastavil jako globální. Takhle se tato část kódu stále opakuje při každém vyvolání makra.

Odsledovať počet riadkov (v náväznosti na nastavenie strany) pre vhodný moment povelu na vytlačenie celistvej strany by šlo aj v Exceli.
Ale on to asi potrebuje priebežne... Hm?

Definovanie oblasti v module zošita - súhlas a vhodnejšie by bolo definovať celý stĺpec C, keďže 1000 nie je nič moc... to je pár strán.

Set Oblast = Columns("C:C")

Jo, máš pravdu, dočasný soubor není potřeba.

Pro autora dotazu:
Co jsem zjistil (a je to logické), tak metodami Excelu a VBA nelze tisknout řádkově. Musíš prostě tohle rozhraní obejít a tisknout přímo na tiskárnu (resp. port, na nějž je tiskárna připojena). Čímž se dostáváš do stejného problému, jako v původním dotazu, pouze to obcházíš přes Excel.
Ovšem internetové zdroje jsou na přímý tisk z Excelovského VBA skoupé, nic konkrétního jsem nenašel...

Hmm, tisk přímo na tiskárnu prostě nefunguje v téhle konfiguraci s tím kabelem jak je v původním dotazu na fotce.
Když zvolím ve vlatnostech tiskárny tisk přímo na tiskárnu, tak po několika znacích a Enteru mi to napíše:

Přístup byl odepřen.
0 zkopírovaných souborů

Asi se do toho hrabe ovladač...

Nějak nevím jak dál, zkoušel jsem to přes EXCEL, protože jsem nevěděl že to je taky neřešitelné.

Aspoň nevěděl by tedy někdo přechodku, která je "normální", viz původní dotaz, takže při ní vznikne LPT port?
Nebo jak byste požadavek řešili vy?

to som nejak nepochopil... t.j. vytlačiť predsa len jednotlivý (zmenený) záznam po každej zmene?
Z úvah vedúcich týmto smerom, by bolo užitočné poznať:
- asi ako často dochádza k zmenám
- či nastávajú len zmeny v nejakej tabuľke s pevným maximálnym počtom riadkov alebo či pod zmenami rozumieme nie opravy doterajších hodnôt, ale pribúdanie riadkov...

Vše souvisí s tím, že dnes jsou všechny programy, ovladače i samotný systém stavěny na stránkový tisk, nikoli řádkový. Žádný formulář Ti nepomůže, maximálně docílíš toho, že po vytištění jednoho řádku tiskárna odstránkuje. Pokud chceš průběžný tisk po každé změně, musíš rozchodit přímý tisk na tiskárnu (resp. port), tedy v podstatě obejít ovladače (+ systém), bez toho se dál nehneš.
Jediná alternativa - změny sbírat někde v programu (třeba v tom Excelovským makru) a až jich bude akorát na 1 stránku, tak je vytisknout. V tomhle případě bys přímý tisk nepotřeboval.

Ja som jeho predoslu odpoved pochopil tak, ze pokial ta zmena bude vytlacena vo forme nejakeho formulara (v zmysle tlaciva), tak mu to strankovanie nevadi. T.j. vytlaci sa papier so zaznamom trebars jedineho riadka, kde doslo ku zmene, ale bude to mat nejaku formu, t.j. zahlavie a pod. To by slo bez problemov.
Dokonca by mohli byt riadky, v ktorych doslo ku zmenam, docasne oznacovane nejakym indikatorom a k dispozicii by mal tlacitko, ktorym by dal kedykolvek prikaz k vytlaceniu nejakej davky, pricom by sa vytlacila davka indikatormi oznacenych riadkov a indikatory by sa povelom na vytlacenie nasledne zmazali... Alebo by sa dalo nastavit, ze sa vytlaci harok po kazdych 10 zmenach a pod a pod...

Ne, promiň, to jsi opravdu pochopil špatně, rozhodně jsem to nemyslel ironicky.
Mě prostě nedocvaklo, že by chtěl jeden řádek s hlavičkou na jedné stránce a měl by vyřešeno. Asi po ránu jedu stále v takovém poloautomatickém režimu... ;-):beer:

Tak asi vyřešeno, excel jsem pustil k vodě, natáhnu si to do něj z texťáku pozdějc.
Vyhrabal jsem staší počítač WXP s paralelním portem, nastavil tisk přímo na tiskárnu, spouštím při startu z bat souboru řádek:

type con: |wtee.exe -a vaha.txt lpt1

Chová se to solidně, samo si to případně vytvoří soubor vaha.txt, nebo když už existuje, tak to do něj připisuje další řádky, a v případě ukončení a znovustuštění počítače připisuje pořád dál do téhož souboru.
Když soubor vaha.txt přejmenuju (samozřejmě to jde provést až po ukončení cmd okna s type con: ...), tak si wintee vytvoří nový.
Přesně jak potřebuju.

Děkuju všem za pomoc i z minulého vlákna, kde byl zmíněn super prográmek wintee.

Zpět do poradny Odpovědět na původní otázku Nahoru