Microsoft Office Online
Prijavljivanje za lokaciju „Moj Office Online“ (Šta je ovo?) | Prijavljivanje

Upozorenje: pregledate ovu stranicu pomoću nepodržanog Web pregledača. Ova Web lokacija najbolje funkcioniše sa programima Microsoft Internet Explorer 6.0 ili noviji, Firefox 1.5 ili Netscape Navigator 8.0 ili noviji. Saznajte više o podržanim pregledačima.

Prilagođeni makroi u programu Excel - uvod
 
Odnosi se na
Microsoft Office Excel 2003
Microsoft Excel 2002

Slika korica knjige


Članak je napisao Kertis Fraj (Curtis Frye), autor knjige Microsoft Office Excel 2003 Programming Inside Out. Posetite Microsoft Learning (na engleskom) da biste kupili ovu knjigu.

Mnogi zadaci koje izvršavate u programu Excel, na primer unošenje podataka za određeni dan ili dodavanje formule u radni list (radni list: primarni dokument koji u programu Excel koristite za rad sa podacima i njihovo skladištenje. Radni list se još naziva i velika tabela. Radni list se sastoji od ćelija koje su uređene po kolonama i redovima; radni list se uvek skladišti u radnoj svesci.) izvršavaju se samo jedanput. Ostali zadaci, kao što je menjanje oblikovanja opsega ćelija, često se ponavljaju, ali mogu brzo da se izvrše korišćenjem alatki u programu Excel. Međutim, često postoji jedan ili dva zadatka koja redovno obavljate i koji zahtevaju da izvršite više koraka.

Na primer, možda ćete želeti da istaknete nekoliko važnih ćelija u radnom listu svaki put kada podnesete izveštaj svojim kolegama. Da ne biste morali ručno da izvršavate niz koraka, možete da kreirate makro, odnosno niz zapisanih radnji, koji će umesto vas izvršiti te korake. Ili ako ste upoznati sa programskim jezikom Microsoft Visual Basic® for Applications (VBA), možete iz početka da napišete prilagođeni makro. U oba slučaja, nakon što kreirate makro, možete da ga pokrenete, uredite ili izbrišete, ukoliko je potrebno.

Ovaj članak vam predstavlja programiranje zasnovano na objektima i program Visual Basic Editor, okruženje u kome možete da zapišete sopstvene Excel makroe. Kada budete spremni da se okušate u pisanju prilagođenog makroa, pogledajte članak Frenka Rajsa (Frank Rice)Jednostavan vodič za Microsoft Office Excel 2003 Object Model (na engleskom), radi detaljnih informacija o tom procesu.

Korišćenje programa Visual Basic Editor

Visual Basic Editor je moćna alatka koja vam omogućava da proširite mogućnosti makroa i da ih prilagodite za sve radnje koje mogu da se izvrše tokom samog zapisivanja. Za otvaranje ovog programa, u meniju Alatke postavite pokazivač na stavku Makro, a zatim izaberite stavku Visual Basic Editor. (Ili pritisnite tastere ALT+F11.)

Da biste otvorili određeni makro, u meniju Alatke postavite pokazivač na stavku Makro, a zatim izaberite stavku Makroi. (Ili pritisnite tastere ALT+F8.) U dijalogu Makro izaberite makro koji želite da uredite ili pregledate, a zatim kliknite na dugme Uredi, da biste otvorili Visual Basic Editor.

Programiranje zasnovano na objektima u programu Visual Basic Editor

U programu Visual Basic Editor koristite programiranje zasnovano na objektima za kreiranje sopstvenih programa. U principu, program je samo skup uputstava koje računar pokreće određenim redosledom.

U programskom jeziku zasnovanom na objektima svi vidovi kompjuterskog koda bazirani su na stvarima u vašem okruženju. Te „stvari“ (što ne iznenađuje) predstavljene su kao objekti, a sve radnje i podaci su sažeti unutar tih objekata. Objekti u programu Excel mogu biti radne sveske, radni listovi, opsezi ćelija i spoljne datoteke.

Po pravilu, postoje četiri vida objekata koja koristite za proširivanje programa: svojstva, metodi, događaji i kolekcije.

Svojstva

Ukratko, svojstva su promenljive koje opisuju pojedine vidove objekta u koje su uključeni. Uobičajeno svojstvo objekta u programu Excel je Name (Ime) koje pokazuje identifikacionu vrednost koju vi ili Excel dodeljujete radnoj svesci, radnom listu, opsegu ćelija ili drugom objektu. Na primer, ako promenite ime radnog lista (pomoću VBA koda ili desnim klikom na karticu radnog lista), menjate vrednost koja je sačuvana u svojstvu Name.

Sada možete da postavite nove vrednosti za pojedina svojstva radnog lista (na primer Name) direktno u programu VBA. Da biste promenili druga svojstva radnog lista, možda ćete morati da zapišete radnju u programu Excel (na primer, da izvršite korake za zaštitu opsega ćelije) ili da koristite neki metod (na način opisan u narednom odeljku).

Svojstva u programu VBA se imenuju pomoću notacije sa tačkom i prvo je napisano ime objekta, a zatim ime svojstva; ta dva elementa odvojena su tačkom. Na primer, za promenu imena radnog lista koristite svojstvo Worksheet.Name (Radni list.Ime).

Metodi

Metod je radnja koju objekat „zna“ kako treba da izvrši. Na primer, verovatno znate da se radni list prikazan u prozoru programa Excel naziva aktivni radni list. U VBA kodu programa Excel možete da obeležite radni list na koji želite da utičete, tako što ćete prvo koristiti poziv metoda Activate (Aktiviraj). Nakon pokretanja metoda Activate, radni list na koji je priložen premešta se ispred radnih listova u prozoru programa Excel i postaje dostupan za uređivanje.

Kao i svojstva, metodi se imenuju korišćenjem notacije sa tačkom. Na primer, za ponovno izračunavanje svih formula u radnom listu koristićete poziv metoda Worksheet.Calculate (Radni list.Izračunaj).

Događaji

Kao što svojstvo predstavlja količinski atribut objekta, a metod radnju koju objekat „zna“ kako treba da izvrši, događaj predstavlja radnju koju objekat „prepoznaje“ nakon što se dogodi. Na primer, Excel 2003, između ostalih, prepoznaje sledeće događaje:

  • Radna sveska je otvorena ili zatvorena.
  • Radni list je aktiviran ili deaktiviran.
  • Radna sveska je sačuvana.
  • Izabran je grafikon.
  • Pritisnut je taster (ili kombinacija tastera).
  • Podatak je unet u ćeliju.
  • Formule na radnom listu su ponovo izračunate.
  • Praćena je hiperveza.

Excel uključuje nekoliko modula za upravljanje događajem ili rutina koda koji se odnose na određene radnje. Kada se izvrši neka od tih radnji i vi ukažete programu Excel šta želite da uradi kada se javi događaj, Excel pokreće kôd u modulu za upravljanje događajem. Na primer, ako nakon kreiranja nove radne sveske želite da Excel prikaže sve otvorene radne sveske u kaskadnom nizu prozora, možete da kreirate sledeći modul za upravljanje događajem:

Private Sub App_NewWorkbook(ByVal Wb As Workbook)
   Application.Windows.Arrange xlArrangeStyleCascade
End Sub

Nemojte da vas zabrinjava ako niste sigurni šta izvršava svaki pojedinačni element rutine za upravljanje događajem. Za sada se skoncentrišite na srednju liniju koda koja ukazuje programu Excel da rasporedi prozore pomoću kaskadnog prikaza. Isti rezultat možete da dobijete i korišćenjem komandi menija programa Excel (meni Prozor, komanda Rasporedi, podkomanda Kaskadno). Međutim, ako je reč o radnji za koju želite da se izvršava svaki put kada se određeni događaj javi, možete da koristite VBA da bi se to automatski dogodilo - i time sebe poštedite muka.

Kolekcije

Kolekcija je poslednji element programiranja zasnovanog na objektima o kome treba nešto da saznate. Kao što sâmo ime govori, kolekcija je grupa objekata iste vrste koji su sadržani u drugom objektu. Na primer, radna sveska sadrži kolekciju koju sačinjava jedan ili više radnih listova. Ako želite da izvršite istu promenu na svim radnim listovima u radnoj svesci, možete da prođete kroz sve radne listove u kolekciji i programski izvršite promenu.

Ako ste ranije kreirali programe, verovatno će se javiti funkcija „For…Next loop“ („Za...Sledeće ponavljanje“), koja vam omogućava da ponovite skup uputstava nekoliko puta pomoću niza sličnog dole prikazanom. (U ovom primeru se dodaje putanja direktorijuma aktivne radne sveske u desni odeljak podnožja na prva tri radna lista.)

For i = 1 to 3
   Worksheets(i).PageSetup.RightFooter = Path
Next i

Problem sa fiksnim kodiranjem (odnosno dodeljivanjem skupa vrednosti) do gornje granice ove funkcije „For…Next loop“ označava da kôd morate da promenite svaki put kada dodate ili izbrišete radni list. To nije tako strašno uraditi jednom ili dvaput, ali ako upravljate višestrukim kodovima, sigurno će doći do toga da zaboravite da ih promenite na nekoliko mesta. Time se prouzrokuju greške koje zatim morate da ispravljate. Da stvar bude još gora, ove greške mogu ostati neotkrivene sve dok korektor ne otkrije da prvih 500 odštampanih kopija vašeg godišnjeg izveštaja nije pravilno oblikovano (a vi ste isključili mobilni telefon dok se bezbrižno odmarate na plaži).

Da biste otkrili broj radnih listova u radnoj svesci možete da koristite kôd, ali postoji i jednostavniji način: koristite funkciju „For Each…Next loop“ („Za svako...Sledeće ponavljanje“). Funkcija „For Each…Next loop“ pronalazi broj objekata u kolekciji, na primer broj radnih listova u radnoj svesci i kreće se kroz svako pojavljivanje stavke. Pomoću ove tehnike prethodni kôd može da bude prikazan na sledeći način:

For Each Wksht in Worksheets
    Wksht.PageSetup.RightFooter = Path
Next Wksht
		

Umesto povećavanja vrednosti u standardnoj funkciji „For…Next loop“, funkcija „For Each…Next loop“ jednostavno traži sledećeg člana kolekcije Worksheets (Radni listovi) i zaustavlja se kada ga pronađe.

Visual Basic Editor i njegovi prozori

Visual Basic Editor prikazuje različite informacije u raznim prozorima. Kada počnete da zapisujete makroe, veoma je važno da poznajete sledeće prozore: „Project Explorer“ („Istraživač projekta“), „Properties“ („Svojstva“) i „Code“ (prozor koda)

Prozor „Project Explorer“ („Istraživač projekta“)

Kada direktno otvorite Visual Basic Editor, prozor „Project Explorer“ možete da koristite za izbor makroa na kome želite da radite. „Project Explorer“ predstavlja sve projekte (grupe kodova) i makroe koje oni sadrže u prikazu stabla (funkcioniše kao prikaz stabla u programu Windows® Explorer). Koren ili osnovni objekti u strukturi stabla predstavljaju tekuću radnu svesku u kojoj radite, kao i sve ostale radne sveske i programske dodatke koji mogu biti otvoreni.

Glavni elementi koje koriste VBA projekti su pojedinačno sačuvani u zasebnoj fascikli unutar svakog projekta. Ti elementi uključuju:

  • Objekte (opisani su u prvom delu ovog članka)
  • Module koji sadrže kôd makroa povezan sa radnim listom
  • Module klase - definicije korisnički definisanih objekata koje ste kreirali za svoju radnu svesku
  • Korisničke obrasce koji omogućavaju vidljivu površinu na koju postavljate grafičke kontrole, na primer dugmad, slike i oblasti teksta

U sledećem primeru tekuća radna sveska identifikovana je kao VBAProject (VBAProjekat). Tri radna lista uključena u radnu svesku (List1, List2 i List3), zajedno sa čitavom radnom sveskom (ThisWorkbook), pojavljuju se u fascikli „Microsoft Office Excel Objects“. Svi makroi programirani u programu VBA ili zapisani, pojavljuju se fascikli „Modules“ („Moduli“). Svi moduli klase, odnosno korisnički obrasci se pojavljuju u fascikli „Class Modules“ („Moduli klase“), odnosno „Forms“ („Obrasci“).

Prozori „Project Explorer“, „Properties“ i „Code“

Prozor „Properties“ („Svojstva“)

Odmah ispod prozora Project Explorer nalazi se prozor Properties (Svojstva) koji se koristi za pregled i menjanje raznih svojstava povezanih sa izabranim objektom. Kod modula, obično je svojstvo Name (Ime) jedino dostupno svojstvo. Radni listovi imaju dodatna svojstva koja mogu da se promene, na primer StandardWidth (Standardna širina) i DisplayPageBreaks (Prikaži prelome stranica). Menjanje svojstava u prozoru Properties se obično vrši pri radu sa korisničkim obrascima.

Napomena  Ime objekta koje se pojavljuje u polju za svojstvo Name prozora Properties, ne mora da bude isto kao ime odgovarajućeg objekta u programu Excel. Ta dva imena mogu da izgledaju slično, ali mogu i da se razlikuju zbog podrazumevanih pravila imenovanja koje program Visual Basic Editor koristi za objekte. (Na primer, imena ne sadrže prorede, moraju da počinju slovom, ne mogu da budu rezervisana reč i ne smeju da budu duža od 31 znaka.) Čak i kada se imena razlikuju, ona mogu biti međusobno interno povezana, da bi se zasigurno odnosila na ispravan objekat.

Prozor „Code“ (prozor koda)

Prozor „Code“ je najveći prozor u programu Visual Basic Editor i na njegovom vrhu se nalaze dva padajuća polja. Padajuće polje sa leve strane - Object (Objekat) - koristi se za izbor objekta na kome radite. Kada radite samo sa kodom, polje prikazuje podrazumevani objekat General (Opšti). Drugo padajuće polje - Procedure (Procedura) - koristi se za izbor pojedinačnih makroa unutar tekućeg modula. Pošto se makroi dodaju u modul i brišu, oni se takođe dodaju u polje Procedure i brišu iz njega.

Prozor koda

Možete takođe da koristite tastere STRELICA NAGORE ili STRELICA NADOLE za pomeranje kroz liste kodova sve dok ne dođete do željenog makroa. Kada se pomerate kroz kôd, polje Procedure se ažurira da bi se označio tekući makro.

Više informacija

Da biste započeli kreiranje sopstvenih Excel makroa, za više informacija pogledajte članak Jednostavan vodič za Microsoft Office Excel 2003 Object Model (na engleskom).

© 2009 Microsoft Corporation. Sva prava zadržana.