Kazalo
V tem učbeniku boste spoznali, kako posneti makro in vstaviti kodo VBA v Excel, kopirati makre iz enega delovnega zvezka v drugega, jih omogočiti in onemogočiti, pregledati kodo, vnašati spremembe in še veliko več.
Za začetnike v programu Excel je koncept makrov pogosto videti nepremagljiv. Za obvladovanje programa VBA so potrebni meseci ali celo leta usposabljanja. Vendar to ne pomeni, da ne morete takoj izkoristiti avtomatizacijske moči makrov v programu Excel. Tudi če ste popolni začetnik v programiranju VBA, lahko preprosto posnamete makro za avtomatizacijo nekaterih svojih ponavljajočih se opravil.
Ta članek je vstopna točka v fascinantni svet Excelovih makrov. Zajema bistvene osnove, ki jih morate poznati za začetek, in vsebuje povezave do povezanih poglobljenih učnih gradiv.
Kaj so makri v programu Excel?
Excelov makro je niz ukazov ali navodil, shranjenih v delovnem zvezku v obliki kode VBA. Lahko si ga predstavljate kot majhen program za izvajanje vnaprej določenega zaporedja dejanj. Ko makro ustvarite, ga lahko kadar koli ponovno uporabite. Z zagonom makra se izvedejo ukazi, ki jih vsebuje.
Makroji se običajno uporabljajo za avtomatizacijo ponavljajočih se opravil in vsakodnevnih rutin. Izkušeni razvijalci VBA lahko napišejo zelo zapletene makroje, ki močno presegajo zmanjšanje števila pritiskov tipk.
Pogosto lahko slišite, da ljudje "makro" imenujejo "VBA". Tehnično gledano obstaja razlika: makro je del kode, Visual Basic for Applications (VBA) pa je programski jezik, ki ga je Microsoft ustvaril za pisanje makrov.
Zakaj uporabljati Excelove makre?
Glavni namen makrov je opraviti več dela v krajšem času. Tako kot uporabljate formule za izračunavanje številk in obdelavo besedilnih nizov, lahko z makri samodejno izvajate pogosta opravila.
Recimo, da morate za svojega nadrejenega pripraviti tedensko poročilo. V ta namen uvozite različne analitične podatke iz nekaj ali več zunanjih virov. Težava je v tem, da so ti podatki neurejeni, nepotrebni ali niso v obliki, ki jo Excel razume. To pomeni, da morate preoblikovati datume in številke, obrezati dodatne presledke in izbrisati prazna mesta ter kopirati in prilepiti informacije v ustrezne stolpce,sestavite grafikone za vizualizacijo trendov in naredite še veliko drugih stvari, da bo vaše poročilo jasno in prijazno do uporabnika. Zdaj pa si predstavljajte, da lahko vse te operacije opravite v trenutku z enim klikom miške!
Izdelava zapletenega makra seveda zahteva čas. Včasih lahko traja celo več časa kot ročno izvajanje istih manipulacij. Vendar je izdelava makra enkratna naloga. Ko je koda VBA enkrat napisana, odpravljena in preizkušena, bo delo opravila hitro in brezhibno, kar bo zmanjšalo človeške napake in drage pomote.
Kako ustvariti makro v programu Excel
V Excelu lahko makroje ustvarite na dva načina - z uporabo programa za snemanje makrov in urejevalnika Visual Basic.
Nasvet. V Excelu se večina operacij z makri izvaja prek Razvijalec zato na trak Excel dodajte zavihek Razvijalec.
Snemanje makra
Tudi če ne veste ničesar o programiranju na splošno in še posebej o VBA, lahko del svojega dela preprosto avtomatizirate tako, da Excelu dovolite, da vaša dejanja zabeleži kot makro. Medtem ko izvajate korake, Excel pozorno spremlja in zapisuje vaše klike z miško in pritiske tipk v jeziku VBA.
Zapisovalnik makrov zajame skoraj vse, kar naredite, in ustvari zelo podrobno (pogosto odvečno) kodo. Ko ustavite snemanje in shranite makro, si lahko njegovo kodo ogledate v urejevalniku Visual Basic in vnesete majhne spremembe. Ko makro zaženete, se Excel vrne k zapisani kodi VBA in izvede popolnoma enake poteze.
Če želite začeti snemati, kliknite Makro zapisa gumb na Razvijalec ali zavihek Status bar.
Za podrobnejše informacije glejte Kako zapisati makro v Excelu.
Pisanje makra v urejevalniku Visual Basic
Urejevalnik Visual Basic for Applications (VBA) je mesto, kjer Microsoft Excel hrani kodo vseh makrov, tako posnetih kot ročno napisanih.
V urejevalniku VBA lahko programirate ne le zaporedje dejanj, temveč tudi ustvarite funkcije po meri, prikažete svoja pogovorna okna, ovrednotite različne pogoje in, kar je najpomembneje, kodirate logiko! Seveda je za ustvarjanje lastnega makra potrebno nekaj znanja o strukturi in sintaksi jezika VBA, kar presega obseg tega priročnika za začetnike.vam prepreči, da bi ponovno uporabili kodo nekoga drugega (recimo tisto, ki ste jo našli na našem blogu :) in tudi popolni začetniki v Excel VBA s tem ne bi smeli imeti težav!
Najprej pritisnite kombinacijo tipk Alt + F11, da odprete urejevalnik Visual Basic-a. Nato vstavite kodo v teh dveh hitrih korakih:
- V Raziskovalcu projektov na levi strani desno kliknite ciljni delovni zvezek in nato kliknite Vstavite > Modul .
- V oknu Koda na desni strani prilepite kodo VBA.
Ko končate, pritisnite tipko F5, da makro zaženete.
Za podrobne korake glejte Kako vstaviti kodo VBA v Excel.
Kako zagnati makre v Excelu
V Excelu lahko makro zaženete na več načinov:
- Če želite zagnati makro iz delovnega lista, kliknite Makroji gumb na Razvijalec ali pritisnite bližnjico Alt + F8.
- Če želite zagnati makro iz urejevalnika VBA, pritisnite:
- F5 za zagon celotne kode.
- F8 za pregled kode po vrsticah. To je zelo koristno za testiranje in odpravljanje težav.
Poleg tega lahko makro zaženete s klikom gumba po meri ali pritiskom dodeljene bližnjice. Za vse podrobnosti glejte Kako zagnati makre v Excelu.
Kako omogočiti makre v programu Excel
Zaradi varnostnih razlogov so vsi makri v Excelu privzeto onemogočeni. Če želite čarobnost kod VBA uporabiti v svoj prid, jih morate znati omogočiti.
Makroje za določen delovni zvezek najlažje vklopite tako, da kliknete Omogočanje vsebine v rumeni opozorilni vrstici za varnost, ki se prikaže na vrhu lista, ko prvič odprete delovni zvezek z makri.
Če želite izvedeti več o varnosti makrov, glejte Kako omogočiti in onemogočiti makre v Excelu.
Kako spremeniti makro nastavitve
Microsoft Excel določi, ali bo dovolil ali prepovedal izvajanje kod VBA v delovnih zvezkih, na podlagi nastavitve makrov, izbrane v oknu Trust Center .
V nadaljevanju so opisani koraki za dostop do nastavitev makro programa Excel in njihovo spreminjanje, če je to potrebno:
- Pojdite na Datoteka in izberite zavihek Možnosti .
- V podoknu na levi strani izberite Trust Center in nato kliknite Nastavitve centra zaupanja... .
- V Trust Center pogovorno okno, kliknite Nastavitve makra na levi strani, izberite želeno možnost in kliknite V REDU .
Na spodnji sliki zaslona je izbrana privzeta nastavitev makro:
Za več informacij glejte Razlaga makro nastavitev programa Excel.
Kako pregledovati, urejati in odpravljati napake v kodah VBA v programu Excel
Vse spremembe v kodi makra, ne glede na to, ali jo samodejno ustvari Excelov zapisovalnik makrov ali jo napišete sami, se izvedejo v urejevalniku Visual Basic.
Če želite odpreti urejevalnik VB, pritisnite kombinacijo tipk Alt + F11 ali kliknite Visual Basic gumb na Razvijalec zavihek.
Na naslov pregledovanje in urejanje kodo določenega makra v Raziskovalec projekta na levi strani, dvokliknite modul, ki ga vsebuje, ali pa z desno tipko miške kliknite modul in izberite Prikaži kodo . odpre se okno Koda, v katerem lahko urejate kodo.
Na naslov testiranje in odpravljanje napak To vas bo popeljalo skozi kodo makra vrstico za vrstico, tako da boste videli učinek vsake vrstice na delovni list. Vrstica, ki se trenutno izvaja, je označena z rumeno barvo. Za izhod iz načina razhroščevanja kliknite na tipko Ponastavitev v orodni vrstici (modri kvadrat).
Kako kopirati makro v drug delovni zvezek
Ustvarili ste makro v enem delovnem zvezku in ga želite ponovno uporabiti tudi v drugih datotekah? V Excelu lahko makro kopirate na dva načina:
Kopiranje modula, ki vsebuje makro
Če se ciljni makro nahaja v ločenem modulu ali so za vas uporabni vsi makri v modulu, je smiselno kopirati celoten modul iz enega delovnega zvezka v drugega:
- Odprite obe delovni knjigi - tisto, ki vsebuje makro, in tisto, v katero ga želite kopirati.
- Odprite urejevalnik Visual Basic.
- V podoknu Raziskovalec projekta poiščite modul, ki vsebuje makro, in ga povlecite v ciljni delovni zvezek.
Na spodnji sliki zaslona kopiramo Modul1 s spletne strani Knjiga1 na . Knjiga2 :
Kopiranje izvorne kode makra
Če modul vsebuje več različnih makrov, vi pa potrebujete samo enega, kopirajte samo kodo tega določenega makra:
- Odprite oba delovna zvezka.
- Odprite urejevalnik Visual Basic.
- V podoknu Raziskovalec projekta dvakrat kliknite modul, ki vsebuje makro, ki ga želite kopirati, da odprete okno Koda.
- V oknu Koda poiščite ciljni makro, izberite njegovo kodo (ki se začne z Pod in se konča z Končni podnaslov ) in pritisnite kombinacijo tipk Ctrl + C, da ga kopirate.
- V Raziskovalcu projekta poiščite ciljni delovni zvezek in vanj vstavite nov modul (desno kliknite delovni zvezek in kliknite Vstavite > Modul ) ali dvakrat kliknite obstoječi modul, da odprete njegovo okno Code (Koda).
- V oknu Koda ciljnega modula za prilepitev kode pritisnite kombinacijo tipk Ctrl + V. Če modul že vsebuje kodo, se pomaknite navzdol do zadnje vrstice kode in nato prilepite kopirani makro.
Kako izbrisati makre v programu Excel
Če določene kode VBA ne potrebujete več, jo lahko izbrišete z uporabo Makro pogovorno okno ali urejevalnik Visual Basic.
Brisanje makra iz delovnega zvezka
Če želite makro izbrisati neposredno iz delovnega zvezka programa Excel, naredite naslednje korake:
- Na Razvijalec v zavihku Koda kliknite skupino Makroji ali pritisnite bližnjico Alt + F8.
- V Makro pogovorno okno, izberite makro, ki ga želite odstraniti, in kliknite Izbriši .
Nasveti:
- Če si želite ogledati vse makroje v vseh odprtih datotekah, izberite Vsi odprti delovni zvezki iz Makroji v spustni seznam.
- Če želite izbrisati makro v delovnem zvezku osebnih makrov, morate najprej odstraniti skritje datoteke Personal.xlsb.
Brisanje makra prek urejevalnika Visual Basic
Prednost uporabe urejevalnika VBA je v tem, da omogoča izbris celotnega modula z vsemi makri, ki jih vsebuje, naenkrat. Prav tako urejevalnik VBA omogoča brisanje makrov v delovnem zvezku osebnih makrov, ne da bi ga morali odkriti.
Za trajno brisanje modula , naredite naslednje korake:
- V Raziskovalec projekta , desno kliknite na modul in izberite Odstranite iz kontekstnega menija.
- Ko vas vprašamo, ali želite izvoziti modul, preden ga odstranite, kliknite Ne .
Na naslov odstranite določen makro , preprosto izbrišite njegovo izvorno kodo neposredno v oknu Koda. Makro lahko izbrišete tudi z uporabo Orodja v meniju urejevalnika VBA:
- Od Orodja v meniju izberite Makroji . Makroji Pojavilo se bo pogovorno okno.
- V Makroji Na spletnem mestu v spustnem seznamu izberite projekt, ki vsebuje neželeni makro.
- V Ime makra izberite makro.
- Kliknite na Izbriši gumb.
Kako shraniti makre v Excelu
Če želite shraniti makro v Excelu, bodisi posneti bodisi ročno napisan, shranite delovni zvezek kot omogočen makro (*.xlms):
- V datoteki, ki vsebuje makro, kliknite Shrani ali pritisnite Ctrl + S .
- Spletna stran Shrani kot Pojavilo se bo pogovorno okno. Excelov delovni zvezek z makri (*.xlsm) iz Shrani kot vrsto spustni seznam in kliknite Shrani :
Kako izvoziti in uvoziti makre v Excelu
Če želite svoje kode VBA deliti z drugimi ali jih prenesti v drug računalnik, je najhitrejši način izvoz celotnega modula v datoteko .bas.
Izvoz makrov
Če želite izvoziti kode VBA, morate storiti naslednje:
- Odprite delovni zvezek z makri.
- Pritisnite Alt + F11, da odprete urejevalnik Visual Basic.
- V Raziskovalcu projekta z desno tipko miške kliknite modul, ki vsebuje makre, in izberite Izvozna datoteka .
- Pojdite v mapo, kamor želite shraniti izvoženo datoteko, poimenujte datoteko in kliknite Shrani .
Uvoz makrov
Če želite uvoziti datoteko .bas s kodami VBA v Excel, sledite naslednjim korakom:
- Odprite delovni zvezek, v katerega želite uvoziti makre.
- Odprite urejevalnik Visual Basic.
- V Raziskovalcu projektov z desno tipko miške kliknite ime projekta in izberite Datoteka za uvoz .
- Pojdite do datoteke .bas in kliknite Odpri .
Primeri makro programov Excel
Eden najboljših načinov učenja programa Excel VBA je raziskovanje vzorcev kode. V nadaljevanju boste našli primere zelo preprostih kod VBA, ki avtomatizirajo nekaj osnovnih operacij. Seveda vas ti primeri ne bodo naučili kodiranja, za to obstaja na stotine profesionalnih učnih gradiv VBA. Naš cilj je le ponazoriti nekaj skupnih značilnosti programa VBA, ki bodo, upajmo, nekoliko približale njegovo filozofijovas.
Skrijte vse liste v delovnem zvezku
V tem primeru uporabimo ActiveWorkbook za vrnitev trenutno aktivnega delovnega zvezka in Za vsako zanko, s katero prebijemo vse liste v delovnem zvezku enega za drugim. Za vsak najden list nastavimo Vidno v lastnost xlSheetVisible .
Sub Unhide_All_Sheets() Dim wks As Worksheet For Each wks In ActiveWorkbook.Worksheets wks.Visible = xlSheetVisible Next wks End SubSkrijte aktivni delovni list ali ga naredite zelo skritega
Če želite upravljati trenutno aktivni list, uporabite ActiveSheet Ta makro vzorec spreminja Vidno lastnost aktivnega lista na xlSheetHidden da ga skrijete. Če želite, da je list zelo skrit, nastavite Vidno v lastnost xlSheetVeryHidden .
Sub Hide_Active_Sheet() ActiveSheet.Visible = xlSheetHidden End SubSprostitev vseh združenih celic v izbranem območju
Če želite določene operacije izvesti na območju in ne na celotnem delovnem listu, uporabite Izbor Spodnja koda bo na primer naenkrat združila vse združene celice v izbranem območju.
Sub Unmerge_Cells() Selection.Cells.UnMerge End SubPrikaži polje za sporočila
Če želite uporabnikom prikazati sporočilo, uporabite MsgBox Tukaj je primer takšnega makra v najpreprostejši obliki:
Sub Show_Message() MsgBox ("Hello World!" ) End SubV resničnih makrih se okno s sporočilom običajno uporablja za informacije ali potrditev. Na primer, preden izvedete dejanje (v našem primeru odpenjanje celic), se prikaže okno s sporočilom. Da/Ne Če uporabnik klikne na "Da", se izbrane celice odstranijo.
Sub Unmerge_Selected_Cells() Dim Answer As String Answer = MsgBox( "Ali ste prepričani, da želite te celice združiti?" , vbQuestion + vbYesNo, "Unmerge Cells" ) If Answer = vbYes Then Selection.Cells.UnMerge End If End SubČe želite preizkusiti kodo, izberite eno ali več območij, ki vsebujejo združene celice, in zaženite makro. Pojavilo se bo naslednje sporočilo:
Spodaj so povezave do bolj zapletenih makrov, ki avtomatizirajo zahtevna in dolgotrajna opravila:
- Makro za kopiranje listov iz več delovnih zvezkov v enega
- Makroji za podvajanje listov v Excelu
- Makroji za razvrščanje zavihkov po abecedi v Excelu
- Makro za odpravo zaščite lista brez gesla
- Makro za štetje in seštevanje pogojno obarvanih celic
- Makro za pretvorbo številk v besede
- Makro za skrivanje vseh delovnih listov razen aktivnega lista
- Makroji za odkritje listov
- Makro za odkritje vseh stolpcev
- Makroji za zelo skrite liste
- Makro za odstranitev vseh prelomov vrstic v aktivnem listu
- Makroji za brisanje praznih vrstic
- Makro za brisanje vsake druge vrstice
- Makro za odstranjevanje praznih stolpcev
- Makro za vstavljanje vsakega drugega stolpca
- Makroji za preverjanje črkovanja v Excelu
- Makro za preslikavo stolpcev v vrstice
- Makro za obračanje stolpcev v Excelu
- Makroji za nastavitev območja tiskanja
- Makroji za vstavljanje prelomov strani
Kako zaščititi makre programa Excel
Če želite preprečiti, da bi drugi pregledovali, spreminjali ali izvajali makro, ga lahko zaščitite z geslom.
Makro zaklepanje za ogled
Če želite svoje kode VBA zaščititi pred nepooblaščenim pregledovanjem in urejanjem, storite naslednje:
- Odprite urejevalnik VBA.
- V Raziskovalcu projektov desno kliknite projekt, ki ga želite zakleniti, in izberite VBAProject Lastnosti...
- V Lastnosti projekta v pogovornem oknu Zaščita preverite zavihek Zaklepanje projekta za ogled dvakrat vnesite geslo in kliknite V REDU .
- Shranite, zaprite in ponovno odprite datoteko Excel.
Ko si poskušate ogledati kodo v urejevalniku Visual Basic, se prikaže naslednje pogovorno okno. Vnesite geslo in kliknite V redu.
Na naslov odklepanje makrov , odprite Lastnosti projekta pogovorno okno in odstranite kljukico iz Zaklepanje projekta za ogled škatla.
Opomba: Ta metoda ščiti kodo pred pregledovanjem in urejanjem, ne preprečuje pa njenega izvajanja.
Zaščita makra pred zagonom z geslom
Če želite zaščititi svoj makro pred izvajanjem, tako da ga lahko zaženejo le uporabniki, ki poznajo geslo, dodajte naslednjo kodo, pri čemer besedo "password" zamenjajte s svojim resničnim geslom:
Sub Password_Protect() Dim password As Variant password = Application.InputBox( "Please enter Password" , "Password Protected Macro" ) Select Case password Case Is = False 'ne naredi nič Case Is = "password" 'vaša koda tukaj Case Else MsgBox "Incorrect Password" End Select End SubMakro uporablja InputBox funkcijo, ki uporabnika pozove k vnosu gesla:
Če se uporabnikov vnos ujema s trdno zakodiranim geslom, se vaša koda izvede. Če se geslo ne ujema, se prikaže okno s sporočilom "Incorrect Password". Če želite uporabniku preprečiti vpogled v geslo v urejevalniku Visual Basic, ne pozabite zakleniti makro za ogled, kot je pojasnjeno zgoraj.
Opomba: Glede na število različnih razbijalnikov gesel, ki so na voljo na spletu, se morate zavedati, da ta zaščita ni absolutna. Lahko jo obravnavate bolj kot zaščito pred naključno uporabo.
Nasveti za makro Excel
Strokovnjaki za Excel VBA so se domislili številnih domiselnih trikov, s katerimi so njihovi makri učinkovitejši. V nadaljevanju bom delil nekaj svojih najljubših.
Če vaša koda VBA aktivno upravlja z vsebino celic, lahko njeno izvajanje pospešite tako, da izklopite osveževanje zaslona in preračunavanje formul. Po izvedbi kode to ponovno vklopite.
Naslednje vrstice je treba dodati na začetek kode (za vrsticami, ki se začnejo z Dim ali po Pod linija):
Application.ScreenUpdating = False Application.Calculation = xlCalculationManualNaslednje vrstice je treba dodati na konec kode (pred Končni podnaslov ):
Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomaticKako razdeliti kodo VBA v več vrstic
Pri pisanju kode v urejevalniku VBA lahko včasih ustvarite zelo dolge izjave, zato se morate za prikaz konca vrstice pomikati vodoravno. To ne vpliva na izvajanje kode, vendar otežuje pregled kode.
Če želite dolgo izjavo razdeliti v več vrstic, vnesite prostor ki mu sledi podčrtanka (_) na mestu, kjer želite prekiniti vrstico. V programu VBA se to imenuje znak za prekinitev vrstice .
Za pravilno nadaljevanje kode v naslednji vrstici upoštevajte naslednja pravila:
- Kode ne razdelite na sredini imen argumentov.
- Za prekinitev komentarjev ne uporabljajte podčrtaja. Pri večvrstičnih komentarjih vnesite apostrof (') na začetku vsake vrstice.
- Podčrtaj mora biti zadnji znak v vrstici, ki mu ne sme slediti nič drugega.
Naslednji primer kode prikazuje, kako izjavo razdeliti v dve vrstici:
Odgovor = MsgBox("Ali ste prepričani, da želite združiti te celice?" , _ vbQuestion + vbYesNo, "Unmerge Cells" )Kako narediti makro dostopen iz katere koli delovne knjige
Ko v Excelu napišete ali posnamete makro, do njega običajno lahko dostopate samo iz določenega delovnega zvezka. Če želite isto kodo ponovno uporabiti v drugih delovnih zvezkih, jo shranite v Delovni zvezek osebnih makrov. Tako bo makro na voljo vedno, ko odprete Excel.
Edina ovira je, da v Excelu privzeto ne obstaja delovna knjižica osebnih makrov. Če jo želite ustvariti, morate posneti vsaj en makro. V naslednjem priročniku so navedene vse podrobnosti: Delovna knjižica osebnih makrov v Excelu
Kako preklicati makro dejanje
Po izvedbi makra njegove akcije ni mogoče vrniti v prejšnje stanje s pritiskom kombinacije tipk Ctrl + Z niti s klikom na Razveljavi gumb.
Izkušeni programerji VBA lahko seveda potrdijo vhodne vrednosti in/ali začetne pogoje, preden makru dovolijo, da spremeni delovni list, vendar je to v večini primerov precej zapleteno.
Lažji način je, da aktivni delovni zvezek shranite iz kode makra. V ta namen preprosto dodajte spodnjo vrstico, preden makru dovolite, da naredi kar koli drugega:
ActiveWorkbook.SavePo želji lahko prikažete tudi okno s sporočilom, ki uporabnika obvešča, da je bil trenutni delovni zvezek shranjen tik pred izvedbo glavne kode makra.
Če z rezultati niste zadovoljni, lahko delovni zvezek preprosto zaprete in ga nato znova odprete.
Excelu preprečite prikaz varnostnega opozorila, če v delovnem zvezku ni makrov
Ste se kdaj znašli v položaju, ko vas Excel nenehno sprašuje, ali želite omogočiti makre, čeprav zagotovo veste, da v tem delovnem zvezku ni nobenih makrov?
Najverjetnejši razlog je, da je bila dodana in nato odstranjena koda VBA, zaradi česar je ostal prazen modul, ki sproži varnostno opozorilo. Če se ga želite znebiti, preprosto izbrišite modul, shranite delovni zvezek, ga zaprite in ponovno odprite. Če to ne pomaga, naredite naslednje:
- Za Ta delovna knjiga in za vsak posamezen list odprite okno Koda, pritisnite Ctrl + A, da izberete vso kodo in jo izbrišete (tudi če je okno Koda videti prazno).
- Izbrišite vse uporabniške obrazce in module razredov, ki jih vsebuje delovni zvezek.
To je način ustvarjanja in uporabe makrov VBA v Excelu. Zahvaljujem se vam za branje in upam, da se naslednji teden spet vidimo na našem blogu!