![]() | ![]() |
![]() |
| ![]() |
| |||||||||||||||||||||||
Visual Basic for Applications makroi
Automatizacijom rada možemo da postignemo veću efikasnost, pa čak i da se program u kojem radimo ponaša pomalo „inteligentno”
Počećemo sa primerom u Microsoft Wordu (koji, naravno, poseduje mogućnost snimanja makroa). Recimo da ste od nekoga dobili tekst sa više desetina tabela koje ne izgledaju jednako kroz ceo tekst ili jednostavno ne izgledaju kako želite. Otvorite tekst, označite prvu tabelu, izaberite opciju Tools: Macro: Record New Macro, dajte ime („SrediTabelu”) makrou koji upravo kreirate i krenite sa formatiranjem tabele po svim parametrima koji su vam od značaja (širina tabele, debljina linija, boja podloge, vrsta i veličina pisma, itd.). Nakon toga, sa Tools: Macro: Stop recording završite snimanje makroa. Nadalje, svaki put kada označite neku tabelu možete da joj zadate one iste zapamćene parametre pozivom ovog snimljenog makroa (Tools: Macro: Macros, izaberete makro i pokrenete ga sa Run). Ako makrou dodelite i skraćenicu preko tastature, jednim potezom možete da na isti način sredite svaku označenu tabelu. Da biste videli kako je makro zapravo upisan, izaberite: Tools: Macro: „SrediTabelu”: Edit. Sub SrediTabelu () Čak i ako se nikada niste susretali sa ičim sličnim, biće vam očigledno da su u makrou jednostavno popisane opcije i njihovi parametri, onako i onim redom kako ste ih izvodili tokom snimanja. Na žalost, kod upotrebe makroa postoje i neka ograničenja. Pre svega, kada pozovete snimljeni makro, on će bukvalno ponoviti sve one radnje koje ste snimili prvi put. Ako su u međuvremenu promenjeni neki uslovi, makro koji pozivate se neće snaći, tj. neće uraditi šta treba ili će prijaviti grešku. Tako makro napravljen u našem primeru sa tabelama neće baš najbolje uraditi posao ako niste označili tabelu ili ako tabele uopšte nema, a naravno da neće raditi ako nije ni otvoren tekst. Ipak, i bez znanja programiranja, već samo upotrebom malo logičkog razmišljanja sa makroima, može mnogo toga da se postigne. Još jedno ograničenje upotrebe makroa jeste to da programi često ne mogu da snime baš sve što može da se izvede „ručno”. Razlog može da bude to da je neka opcija suviše „opšteg tipa” da bi bila snimljena u okviru makroa, ili opcija jednostavno nije podržana. Male modifikacije Sledeći primer je „Čistač teksta” u Wordu, a to je jednostavno višestruka funkcija Replace, nešto što i mi u „Svetu kompjutera” koristimo za blago automatsko sređivanje kojekakvih „prljavih” tekstova. Videćemo da već laganom modifikacijom snimljenog makroa možemo jednostavno da dodamo nove mogućnosti i dobijemo na preglednosti makroa za dalje modifikacije. Uz to, skraćujemo i sam proces snimanja makroa sa čitavom serijom funkcija što ponekad može da bude zamorno. Ako snimite kao makro jednu zamenu teksta „aaa” u „bbb” upotrebom funkcije Edit: Replace, i pogledate kako to izgleda (Tools: Macro: Macros, izaberete makro, Edit), to će izgledati otprilike ovako: Sub Macro1() Izmenićemo makro tako da se poziv funkcije Replace odnosi na ceo sadržaj aktivnog dokumenta, a ne samo na selekciju, i umesto jednog Execute stavićemo čitavu seriju, sa različitim vrednostima za znake koje menjamo i znake sa kojim ih menjamo: Sub CistacTeksta() Ovaj makro je ekvivalent procesu u kojem smo sa više Replace komandi zamenili razne znake navoda u obične navodnike, skinuli razmake sa krajeva i početaka pasusa, tabove sa početaka pasusa i promenili dvostruke razmake u jedan razmak. Modifikacijom ovog makroa može se dodati i sređivanje razmaka pre i posle znakova interpunkcije, napraviti zamena slovnih rasporeda ili nešto drugo za šta je dovoljna višestruka zamena (delova) teksta. Malo programiranja Modifikacijom makroa, a tu već pomalo zalazimo u programiranje, postižemo dve važne stvari: mogućnost korišćenja velikog broja dodatnih funkcija koje uopšte ne postoje u menijima programa, i drugo, proveravanje uslova izvođenja funkcija, tj. dodavanje trunke „pameti” našim makroima, koji time već pomalo postaju program(čić)i. Tako bismo, opet u našem primeru sa tabelama, mogli da dodamo nekoliko provera (da li je uopšte otvoren tekst, da li je tabela označena...) čime bismo se osigurali da se makro izvršava samo ako su ispunjeni odgovarajući preduslovi. Zatim, možemo da dodamo da sam makro označi tabelu ako nije označena (jer, da se podsetimo, pri snimanju onog prvog makroa nismo izabrali Table: Select: Table, već smo krenuli od unapred označene tabele). Najvažnije, ima stvari koje jednostavno nije moguće izvesti „ručno”: daljom modifikacijom makroa možemo da postignemo da se sve one famozne promene parametara tabele izvrše odjednom za sve tabele u tekstu, pa čak i za sve tabele u svim otvorenim dokumentima! Moguće uštede u vremenu možete da naslutite, zavisno od toga šta ste konkretno naumili da uradite u svom programu. Pomenuti Word, i uopšte paket Office, drugi Microsoftovi programi, kao i mnogi Windows programi drugih proizvođača za automatizaciju koriste VBA (Visual Basic for Applications), u Adobeovim programima uglavnom se koristi JavaScript (u poslednje vreme i VBA), a neki drugi programi koriste sopstvena, ali uglavnom manje moćna rešenja. Dakle, koji god da je program u pitanju, za automatizaciju se koriste čitavi programski jezici, uz zamašan skup dodatnih funkcija koje se tiču matičnog programa. Zato bi zalaženje u detalje i konkretne stvari daleko, daleko prevazišlo ovde raspoloživi prostor. Mi ćemo se još malo pozabaviti samo mogućnostima i opštijim primerima. Može i za crtanje Da se ne ograničimo samo na Word, CorelDRAW takođe može da snima akcije korisnika kao makroe, i takođe može da se kontroliše preko VBA. Upotrebom snimljenih makroa možete da ponovite seriju istih transformacija za više grafičkih objekata, zavisno od potreba, i znatno efikasnije završite posao.
Sub Sarenilo() U levom donjem uglu CorelDRAW dokumenta ovaj makro iscrtava mrežu od 10 x 10 kvadrata dimenzija 10 x 10 mm i popunjava ih aritmetički dobijenim vrednostima boje, u zavisnosti od pozicije. Evo i rezultata da malo razveseli izgled ove stranice. Iz programa u program
Nakon definisanja boja, makro se povezuje sa Excelom i uzima prvih šest podataka iz označenog dela tabele. Zatim iscrtava pravougaonike sa širinama koje zavise od prosleđenih vrednosti. Ovaj primer je osnova postupka kojim nastaju dijagrami i tabele kojima u našem časopisu prikazujemo rezultate testova hardvera. Sub Dijagramcic() • • •
Tihomir STANČEVIĆ |
![]()
![]()
| |||||||||||||||||||||||||
![]() | |
![]() | ![]() |
Home / Novi broj | Arhiva • Opšte teme | Internet | Test drive | Test run | PD kutak | CeDeteka | WWW vodič • Svet igara Svet kompjutera Copyright © 1984-2018. Politika a.d. • Redakcija | Kontakt | Saradnja | Oglasi | Pretplata • Help • English | |
SKWeb 3.22 |