Makro na pridávanie údajov

MS Excel obsahuje možnosť automatizovať úkony pomocou makier a kódu VBA. Výhoda je v jednoduchosti vytvorenia základných automatizovaných úkonov, ktoré Vám potom výrazne uľahčia prácu. Popisované makro bude presúvať z jedného zošita filtrované údaje a bude ich postupne pridávať do druhého.

Písmo: A- | A+
Diskusia  (4)

Predstavte si situáciu, že v jednom zošite (av_zdroj.xls) máte zoznam výrobkov na sklade, ku ktorým pridávate po predaji cenu. Takýto záznam chcete potom premiestniť do druhého zošita (av_ciel.xls), aby Vám v skladovej tabuľke už neprekážal, keď ste už tovar predali. Ja mám v tabuľkách pre prehľadnosť len dva stĺpce A -> Auto a B -> Cena. Do stĺpca B sa po predaji tovaru vpíše jeho cena a na konci pracovného dňa sa budú tieto riadky všetky naraz premiestňovať do druhého zošita.

Makro môžete vytvoriť cez Záznam makra v ponuke Nástroje > Makro. V zobrazenom okne zadajte názov a kliknutím na OK spustíte záznam. Celý postup funguje tak, ako keby ste Vaše úkony nahrávali na video. Jednoducho všetko čo chcete aby makro robilo, počas záznamu urobíte ručne. Pozor, zaznamenajú sa aj chybné úkony, ktoré urobíte.

SkryťVypnúť reklamu
SkryťVypnúť reklamu
SkryťVypnúť reklamu
Článok pokračuje pod video reklamou
SkryťVypnúť reklamu
Článok pokračuje pod video reklamou

Malý problém je v tom, že ak nebudete používať pri zázname makra relatívne odkazy tak všetky úkony sa budú vždy robiť len v tých bunkách ako pri zázname. Relatívny odkaz pri zázname zapínate cez zobrazený panel nástrojov „Záznam makra“. Najlepšie tento úkon uvidíte na zápise údajov do nového zošita, pretože vždy ich tam bude viac a nedokážete určiť absolútnym odkazom v kóde VBA kam sa majú zapísať nové údaje (nebudete predsa denne upravovať kód VBA). Preto je vhodné použiť relatívny odkaz a klávesovú skratku Ctrl + šípka dolu + 1x šípka dolu, ktorá Vás presunie za posledný záznam bez ohľadu na to, koľko ich tam už je. Tým určíte kam bude makro zapisovať nové údaje. Tiež je potrebné používať automatický filter, pretože výrobky, ktoré postupne predávate zákazníkom nie sú vždy v susedných riadkoch.

SkryťVypnúť reklamu

Po všetkých úkonoch, ktoré ste chceli zaznamenať je potrebné záznam zastaviť. Ak by ste sa potom cez klávesovú skratku Alt + F11 pozreli do kódu VBA, tak by ste videli niečo podobné tomuto:

Sub kopiruj()
'
' kopiruj Makro
' Makro zaznamenané 23.5.2006, Peter Belko
'
 Range("A1").Select
 Selection.AutoFilter Field:=2, Criteria1:="<>"
 Range("A2").Select
 Range(Selection, Selection.End(xlToRight)).Select
 Range(Selection, Selection.End(xlDown)).Select
 Selection.Copy
 Windows("av_ciel.xls").Activate
 Range("A1").Select
 Selection.End(xlDown).Select
 ActiveCell.Offset(1, 0).Range("A1").Select
 ActiveSheet.Paste
 Windows("av_zdroj.xls").Activate
 Application.CutCopyMode = False
 Selection.EntireRow.Delete
 Selection.AutoFilter Field:=2
 Range("A1").Select
End Sub

SkryťVypnúť reklamu

Je to kód VBA, ktorý sa vytváral počas záznamu. Programátori ho môžu dodatočne upravovať podľa potreby a to je tiež jedna z celkom dobrých funkcií Excelu.

Ak by ste si chceli toto makro vyskúšať, vytvorte si dva xls súbory a do každého vytvorte dva názvy stĺpcov. Potom v zdroji zapnite automatický filter a vpíšte cvičné údaje (výrobok, ceny). V editore jazyka VBA v zdrojovom súbore (Alt + F11) potom vložte Modul cez Insert > Module. Do okna modulu skopírujte vyššie uvedený kód – týmto obídete nutnosť zaznamenávať makro. Všetko uložte a vyskúšajte makro „kopiruj“ spustiť (Nástroje > Makro > Makrá). Malo by Vám preniesť filtrované záznamy s cenou do druhého zošita.

SkryťVypnúť reklamu

Môj kód ma malý problém v tom, že ak v cieľovom zošite nebudete mať ručne vpísaný prvý záznam, tak to nebude správne fungovať. Preto je potrebné do súboru av_ciel.xls prvý záznam predaného tovaru vložiť ručne. Od druhého už bude fungovať makro. Nemal som čas zaoberať sa vyriešením tohto nedostatku a myslím, že to nie je veľká prekážka.

Netvrdím, že toto je jediné riešenie tohto problému a programátori by možno urobili niečo jednoduchšie a prehľadnejšie, ale pre bežných používateľov je to dobrá pomôcka na automatizovanie bežných úkonov.

Peter Belko

Peter Belko

Bloger 
  • Počet článkov:  345
  •  | 
  • Páči sa:  15x

Môžete ho stretnúť ako lektora na počítačových školeniach, pri IT konzultáciách vo firmách, na letných terasách a v kaviarňach ako pozoruje dianie okolo seba, ale aj na potulkách po gréckych ostrovoch, pretože počítače nie sú jediné čo ho zaujíma.Ostrovné správy popisuje na osobnej stránke www.dovolenkar.skAktívne prispieva na svoj portál Tipy a triky v MS Office.. Zoznam autorových rubrík:  Tipy a triky MS Office 2013/20Externé tipy a triky MS OfficeSharePoint, spolupráca,Office3Tipy a trikyNávodyStalo sa ...Office 2010/2013 BetaMicrosoft KB článkySúkromnéNezaradené

Prémioví blogeri

Lucia Nicholsonová

Lucia Nicholsonová

207 článkov
Pavel Macko

Pavel Macko

188 článkov
Pavol Koprda

Pavol Koprda

10 článkov
Adam Valček

Adam Valček

14 článkov
Matúš Sarvaš

Matúš Sarvaš

3 články
Radko Mačuha

Radko Mačuha

223 článkov
reklama
reklama
SkryťZatvoriť reklamu