Jedna od najistaknutijih kvaliteta Visual Basic-a je da je a potpun razvojno okruženje. Što god želite učiniti, postoji "okus" Visual Basic koji će vam pomoći da obavite posao! Visual Basic možete koristiti za razvoj stolnih i mobilnih uređaja i udaljeni (VB.NET), skriptiranje (VBScript) i razvoj sustava Office (VBA !) Ako ste isprobali VBA i želite znati više o tome kako ga koristiti, ovo je tutorial za vas. (Ovaj se tečaj temelji na verziji VBA pronađenoj u programu Microsoft Office 2010.)
Ako pretražujete tečaj u Microsoft Visual Basic .NET, našli ste i pravo mjesto. Provjerite: Visual Basic .NET 2010 Express - Vodič "Iz temelja"
VBA kao opći koncept bit će obrađen u ovom članku. VBA ima više nego što možda mislite! Također možete pronaći članke o sestrama Office VBA:
U osnovi postoje dva načina za razvoj programa koji mogu raditi s Office aplikacijama: VBA i VSTO. U listopadu 2003. Microsoft je predstavio unapređenje u profesionalno programsko okruženje Visual Studio .NET pod nazivom Visual Studio Tools for Office - VSTO. No iako VSTO koristi znatne prednosti .NET-a u Officeu, VBA je i dalje popularniji od VSTO-a. VSTO zahtijeva korištenje Profesionalne ili više verzije Visual Studio - što će vas vjerojatno koštati više od Officeove aplikacije koju koristite - osim aplikacije Office. No s obzirom da je VBA integriran s host aplikacijom Office, ništa vam više ne treba.
VBA uglavnom koriste stručnjaci iz sustava Office koji svoj posao žele učiniti bržim i jednostavnijim. Rijetko vidite velike sustave pisane na VBA. VSTO, s druge strane, profesionalni programeri u većim organizacijama koriste za stvaranje dodataka koji mogu biti prilično sofisticirani. Prijava treće strane, poput papirnate tvrtke za Word ili knjigovodstvene tvrtke za Excel, vjerojatnije je da će biti napisana pomoću VSTO.
Microsoft u svojoj dokumentaciji napominje da postoje tri razloga za korištenje VBA:
-> Automatizacija i ponavljanje - Računala mogu raditi isto i iznova i preko mnogo boljeg i bržeg nego što to mogu ljudi.
-> Proširenja za interakciju s korisnikom - želite li točno predložiti kako netko treba formatirati dokument ili spremiti datoteku? VBA to može učiniti. Želite li potvrditi što netko ulazi? VBA to može i učiniti.
-> Interakcija između aplikacija za Office 2010 - Kasniji članak iz ove serije naziva se Word i Excel radeći zajedno. Ali ako je ovo što vam treba, možda biste trebali razmisliti Automatizacija u uredu, to jest pisanje sustava pomoću VB.NET-a, a zatim korištenje funkcija iz Office aplikacije poput Word ili Excel po potrebi.
Microsoft je izjavio da će i dalje podržavati VBA i to će se istaknuti u Službeno Plan za razvoj Microsoft Officea 2010. Dakle, imate toliko uvjerenja koliko Microsoft ikad pruža kako vaše ulaganje u razvoj VBA u skoroj budućnosti neće zastarjeti.
S druge strane, VBA je posljednji preostali Microsoftov proizvod koji ovisi o VB6 "COM" tehnologiji. Sad je više od dvadeset godina! U ljudskim godinama to bi učinilo starijim od vampira Lestata. Možda ćete to vidjeti kao "isprobljeno, provjereno i istinito" ili ga možda smatrate "drevnim, istrošenim i zastarjelim". Naklonim se prvom opisu, ali trebali biste biti svjesni činjenica.
Prvo što treba shvatiti je odnos između VBA i Office aplikacija kao što su Word i Excel. Prijava za Office je a domaćin za VBA. VBA program nikad se ne može izvesti sam. VBA je razvijena u okruženju domaćina (koristeći razvijač na vrpci aplikacije Office), a mora se izvršiti kao dio Wordovog dokumenta, radne knjige u Excelu, baze podataka Accessa ili nekog drugog Office računala.
Drugačiji je i način na koji se koristi VBA. U aplikaciji kao što je Word, VBA se koristi prvenstveno kao način pristupa objektima okruženja domaćina, kao što je pristup paragrafima u dokumentu s Riječju riječi. Dokument. Stavke objekta. Svako okruženje domaćina doprinosi jedinstvenim objektima koji nisu dostupni u ostalim okruženjima domaćina. (Na primjer, u Word dokumentu ne postoji "radna knjiga". Radna knjižica jedinstvena je za Excel.) Kod Visual Basic uglavnom je tu kako bi se mogla koristiti objekti prilagođeni svakoj aplikaciji Office-a.
Fuzija između VBA i glavnog koda može se vidjeti u ovom uzorku koda (preuzet od Microsofta Uzorak baze podataka Northwind) gdje je čisto VBA kod prikazan crvenom bojom, a pristupni specifični kôd je prikazan u plava. Crveni kôd bio bi isti u Excelu ili Wordu, ali plavi je kod jedinstven za ovu Access aplikaciju.
Sama VBA gotovo je ista kao i godinama. Način na koji se integrira s host računarskom aplikacijom i sustavom pomoći više je poboljšan.
Verzija sustava Office 2010 ne podrazumijeva karticu za razvojne programere. Kartica Programer će vas odvesti u dio aplikacije u kojem možete kreirati VBA programe, tako da prvo što morate učiniti je promijeniti tu opciju. Jednostavno idite na karticu Datoteka, Opcije, Prilagodite vrpcu i na glavnim karticama kliknite okvir za razvojne programere.
Sustav pomoći funkcionira znatno glatnije nego u prethodnim verzijama. Pomoć za svoja pitanja o VBA možete dobiti ili izvan mreže, iz sustava koji je instaliran na vašem Office programu ili online od Microsofta putem Interneta. Dva sučelja dizajnirana su da izgledaju slično:
Kliknite ovdje za prikaz ilustracije
Ako je vaša internetska veza brza, internetska pomoć pružit će vam više i bolje informacije. No lokalno instalirana verzija vjerojatno će biti brža i u većini slučajeva jednako dobra. Možda želite lokalnu pomoć učiniti zadanu, a zatim upotrijebiti internetsku pomoć ako vam lokalna verzija ne daje ono što želite. Najbrži način na internetu je jednostavno odabrati "Sve riječi" (ili "Sve Excel" ili neku drugu aplikaciju) s padajućeg izbornika Pretraživanje u pomoći. To će se odmah pokrenuti na mreži i izvršiti isto pretraživanje, ali neće resetirati vaš zadani odabir.
Kliknite ovdje za prikaz ilustracije
Na sljedećoj stranici započinjemo s načinom stvaranja VBA programa.
Kad se VBA "ugosti" programom poput Worda ili Excela, program "živi" u datoteci dokumenata koju koristi domaćin. Na primjer, u programu Word možete spremiti svoj 'Word macro' (to je ne "makronaredbu", ali o terminologiji se nećemo trenutačno svađati) ni u Word dokumentu ni u Word predlošku.
Pretpostavimo da je ovaj VBA program kreiran u Wordu (ovaj jednostavan program samo mijenja font podebljanim u odabrani redak) i sprema se u Wordov dokument:
Sub AboutMacro () ' O About Macro Makro. 'Makro je 9.9.999. Snimio Dan Mabbutt. ' Izbor. HomeKey Unit: = wdStory. Izbor. EndKey jedinica: = wdLine, Extend: = wdExtend. Izbor. Font. Bold = wdToggle. Izbor. EndKey jedinica: = wdStory. Kraj Sub.
U starijim verzijama sustava Office jasno ste mogli vidjeti VBA kôd pohranjen kao dio dokumenta datoteku u spremljeni Word dokument pregledavajući ga u Notepadu gdje sve u Word dokumentu može vidjela. Ta je ilustracija izrađena s prethodnom verzijom Worda jer je Microsoft promijenio format dokumenta u trenutnoj verziji i VBA programski kod se više ne pojavljuje kao običan tekst. Ali glavnica je ista. Slično tome, ako stvorite Excel proračunsku tablicu s "Excel makronaredbom", ona će biti spremljena kao dio .xlsm datoteke.
Kliknite ovdje za prikaz ilustracije
VBA i sigurnost
Jedan od najučinkovitijih trikova s računalnim virusom u prošlosti bio je umetanje zlonamjernog VBA koda u Officeov dokument. S prethodnim verzijama sustava Office, kada se dokument otvorio, virus bi se mogao automatski pokrenuti i stvoriti pustoš na vašem računalu. Ova otvorena sigurnosna rupa u Officeu počela je utjecati na Office prodaju i to je zaista privuklo Microsoftovu pažnju. Sa sadašnjom generacijom Officea iz 2010, Microsoft je temeljito začepio rupu. Uz ovdje navedena poboljšanja, Microsoft je poboljšao sigurnost sustava Office na načine na koje možda nećete primijetiti sve do hardverske razine. Ako oklijevate koristiti VBA jer ste čuli da to nije sigurno, budite sigurni da je Microsoft prešao dodatni kilometar da bi to sada promijenio.
Najvažnija promjena bila je stvaranje posebne vrste dokumenata samo za Office dokumente koji uključuju VBA programe. Na primjer, u Wordu, MyWordDoc.docx ne može sadržavati VBA program, jer Word neće dopustiti programe u datoteci spremljenoj s datotečnim nastavkom "docx". Datoteka mora biti spremljena kao "MyWordDoc.docm" da bi VBA programiranje bilo dopušteno kao dio datoteke. U Excelu je proširenje datoteke ".xlsm".
Da bi uporedo s ovom poboljšanom vrstom dokumenata, Microsoft je stvorio novi sigurnosni podsustav u sustavu Office pod nazivom Trust Center. U suštini, možete prilagoditi način na koji vaš Office Office postupa s dokumentima koji sadrže VBA kod detaljno. Centar za pouzdanost otvorite na kartici Programer u aplikaciji Office tako da kliknete Makro sigurnost u odjeljku Kôd na vrpci.
Kliknite ovdje za prikaz ilustracije
Neke su opcije dizajnirane za "očvrsnuće" vaših Office aplikacija kako se zlonamjerni kod ne pokreće, a druge jesu dizajniran tako da programerima i korisnicima olakšava upotrebu VBA bez sigurnosti nepotrebnog usporavanja stvari prema dolje. Kao što vidite, postoji puno načina na koje možete prilagoditi sigurnost i prolazak kroz sve njih daleko je izvan opsega ovog članka. Srećom, Microsoftovo web mjesto ima opsežnu dokumentaciju o ovoj temi. Također je sretno što su zadane sigurnosne postavke dobre za većinu zahtjeva.
Budući da je VBA vezan za host program Office, morate ga pokrenuti tamo. Ta je tema obrađena počevši od sljedeće stranice.
Kako pokrenuti VBA aplikaciju
To je zapravo vrlo dobro pitanje jer je ono prvo koje će postaviti korisnici vaše aplikacije. Postoje dva načina:
-> Ako odlučite da ne upotrebljavate kontrolu, poput gumba, za pokretanje programa, tada morate koristiti naredbu Makronaredbe na vrpci (kartica Programer, Koda grupa). Odaberite program VBA i kliknite Pokreni. No, to se nekim vašim korisnicima možda čini previše. Na primjer, možda ne želite da im kartica Developer uopće bude dostupna. U tom slučaju ...
-> Za pokretanje aplikacije morate dodati nešto što korisnik može kliknuti ili upisati. U ovom ćemo članku pogledati kontrolu gumba. Ali to bi mogao biti klik na prečac, ikona na alatnoj traci ili čak čin unošenja podataka. Oni se zovu događaji a o čemu ćemo pisati u ovom i kasnijim člancima jest kod događaja - programski kôd koji se automatski pokreće kada se dogodi neki određeni događaj - poput klikova na gumb.
Korisničke forme, kontrole obrasca i ActiveX kontrole
Ako ne samo birate makronaredbu, najčešći način pokretanja VBA programa jest kliknuti gumb. Taj gumb može biti kontrola oblika ili an ActiveX kontrola. Do određene mjere, vaš izbor ovisi o aplikaciji Office koju koristite. Primjerice, Excel pruža nešto drugačiji izbor nego Word. Ali ove su temeljne vrste kontrola iste.
Budući da nudi najviše fleksibilnosti, pogledajmo što možete učiniti s Excel-om 2010. Jednostavna tekstualna poruka bit će umetnuta u ćeliju kada se klikne nekoliko različitih gumba samo kako bi se razlike učinile jasnijima.
Za početak izradite novu radnu knjigu Excela i odaberite karticu Razvojni programer. (Ako imate drugu aplikaciju za Office, trebalo bi djelovati inačica ovih uputa.)
Kliknite ikonu Umetanje. Prvo ćemo raditi s gumbom Kontrole obrasca.
Kontrole oblika su starija tehnologija. U Excelu su prvi put predstavljeni u verziji 5.0 1993. godine. Dalje ćemo raditi s VBA korisničkim obrascima, ali kontrole obrasca s njima se ne mogu koristiti. Također nisu kompatibilne s webom. Kontrole obrasca postavljaju se izravno na površinu radnog lista. S druge strane, neke ActiveX kontrole - koje smatramo sljedećim - ne mogu se koristiti izravno na radnim listovima.
Kontrole obrasca koriste se tehnikom "klik i crtanje". Kliknite kontrolu obrasca gumba. Pokazivač miša promijenit će se u znak plus. Nacrtajte kontrolu povlačenjem po površini. Kada otpustite gumb miša, pojavit će se dijaloški okvir s upitom da se makro naredba poveže s gumbom.
Kliknite ovdje za prikaz ilustracije
Osobito kada prvi put stvarate kontrolu, nećete imati VBA makronaredbu koji čeka da bude povezan s pa pritisnite Novo, a VBA uređivač će se otvoriti s predloženim imenom već ispunjenim u omotač događaja potprogram.
Kliknite ovdje za prikaz ilustracije
Da biste dovršili ovu vrlo jednostavnu aplikaciju, samo upišite ovu izjavu VBA koda unutar Sub:
Stanice (2, 2) .Value = "Klikne gumb gumba"
Tipka ActiveX gotovo je potpuno ista. Jedna je razlika u tome što VBA taj kôd stavlja u radni list, a ne u zasebni modul. Evo potpunog koda događaja.
Privatni Sub CommandButton1_Click () Ćelije (4, 2) .Value = "Klikom na gumb ActiveX" Kraj Sub.
Uz postavljanje ovih kontrola izravno na radni list, možete dodati i UserForm projekta i umjesto njega stavite kontrole. UserForms - otprilike ista stvar kao i Windows obrasci - imaju puno prednosti u mogućnosti upravljanja više kontrola poput uobičajene aplikacije Visual Basic. Dodajte UserForm projektu u uređivač Visual Basic. Upotrijebite izbornik View ili desnom tipkom miša kliknite Project Explorer.
Kliknite ovdje za prikaz ilustracije
Zadani je UserForm za ne prikazati obrazac. Da biste ga učinili vidljivim (a kontrole učinili dostupnima korisniku), izvršite način prikazivanja obrasca. Dodao sam još jedan gumb obrasca samo za ovo.
Potisni gumb2_Click () UserForm1.Show. Kraj Sub.
Primijetit ćete da je UserForm modalni prema zadanom. To znači da kad je obrazac aktivan, sve ostalo u aplikaciji je neaktivno. (Primjerice, klikom na druge gumbe ne radi se ništa.) To možete promijeniti promjenom svojstva ShowModal iz UserForm u False. Ali to nas sve dublje bavi programiranjem. Sljedeći članci iz ove serije objasnit će više o tome.
Kôd za UserForm nalazi se u UserForm objektu. Ako odaberete View Code za sve objekte u Project Explorer-u, vidjet ćete da postoje tri odvojene potprograme Click događaja koji se nalaze u tri različita objekta. Ali svi su oni dostupni u istoj radnoj knjizi.
Kliknite ovdje za prikaz ilustracije
Pored forsiranja događaja klikom na gumb, VBA se koristi i za reakciju na događaje u objektima u hosting aplikaciji. Na primjer, možete otkriti kada se u Excelu promijeni proračunska tablica. Ili možete otkriti kada je red dodan u bazu podataka u programu Access i napisati program za obradu tog događaja.
Pored poznatih naredbenih gumba, tekstnih okvira i ostalih komponenti koje stalno vidite u programima, možete dodati komponente koje su zapravo dio vaše Excel proračunske tablice. u vaš Word dokument. Ili napravite obrnuto. To nadilazi "kopiraj i zalijepi". Na primjer, možete pokazati proračunsku tablicu Excela u dokumentu programa Word.
VBA vam omogućuje da koristite svu moć jedne Office aplikacije u drugoj. Na primjer, Word ima ugrađenu relativno jednostavnu sposobnost izračuna. Ali Excel - dobro - "izvrsno" se računa. Pretpostavimo da ste u Word dokumentu željeli koristiti prirodni zapis funkcije Gamma (relativno sofisticirani matematički proračun)? Pomoću VBA možete proslijediti vrijednosti toj funkciji u Excelu i dobiti odgovor natrag u Word dokumentu.
A možete koristiti i puno više od Officeovih aplikacija! Ako kliknete ikonu "Više kontrola", vidjet ćete značajan popis stvari koje su instalirane na vašem računalu. Ne rade svi ti "izvan okvira" i trebali biste imati dostupnu dokumentaciju za svaki od njih, ali daje vam ideju o tome koliko je podrška VBA široka.
Od svih značajki u VBA ima i jedno koje je očito korisnije od bilo kojeg drugog. Saznajte što je na sljedećoj stranici.
Za kraj sam spremio najbolje! Slijedi tehnika koja se primjenjuje na sve Officeove aplikacije. Naći ćete ga mnogo, pa ćemo to sad naći u Uvodu.
Kad počnete kodirati sofisticiranije VBA programe, jedan od prvih problema s kojima ćete se susresti je otkrivanje načina i svojstava Officeovih objekata. Ako pišete program VB.NET, često ćete potražiti uzorke koda i primjere za rješavanje ovog problema. Ali kada uzmete u obzir sve različite hosting aplikacije i činjenicu da svaki od njih ima stotine novih objekata, obično ne možete pronaći nešto što točno odgovara onome što trebate učiniti.
Odgovor je "Snimi makro ..."
Osnovna ideja je uključiti "Snimanje makronaredbi", proći kroz korake postupka sličnog onome što želite da realizira vaš program, a zatim provjerite u rezultiranom VBA programu kôd i ideje.
Mnogi ljudi pogriješe misleći da morate biti u mogućnosti snimati točno onaj program koji vam je potreban. Ali uopće nije potrebno da budemo točni. Obično je dovoljno dobro snimiti VBA program koji je upravo "blizak" onome što želite, a zatim dodati izmjene koda kako biste ga učinili preciznim. To je tako jednostavno i korisno da ću ponekad snimiti desetak programa s malim razlikama samo da vidim kakve su razlike u kodovima. Ne zaboravite izbrisati sve eksperimente kada ih završite!
Kao primjer, kliknuo sam Snimanje makronaredbe u programu Word Visual Basic Editor i upisao nekoliko redaka teksta. Evo rezultata. (Dodaci linija dodani su kako bi ih umanjili.)
Sub Macro1 () ' 'Makro1 Makro. ' ' Izbor. Tekst tipaTekst: = _. "Ovo su vremena koja" Izbor. Tekst tipaTekst: = _. "probaj muške duše. The " Izbor. Tekst tipaTekst: = _. "ljetni vojnik" Izbor. Tekst tipaTekst: = _. "i domoljub od sunca" Izbor. Tekst tipaTekst: = _. "će se u ovim vremenima smanjiti od" Izbor. Tekst tipaTekst: = _. "službu svoje zemlje." Izbor. MoveUp jedinica: = wdLine, broj: = 1. Izbor. HomeKey jedinica: = wdLine. Izbor. MoveRight jedinica: = wdCharacter, _. Broj: = 5, produži: = wdExtend. Izbor. Font. Bold = wdToggle. Kraj Sub.
Nitko ne studira VBA samo za sebe. Uvijek ga koristite zajedno s određenom aplikacijom za Office. Dakle, za nastavak učenja ovdje su članci koji prikazuju VBA koji se koristi i u Wordu i u Excelu:
-> Početak korištenja VBA: Word Working Partner
-> Početak korištenja VBA: Excel radni partner