Vodnik za uporabo Visual Basic za aplikacije

Ena izmed najbolj izjemnih lastnosti Visual Basic je, da je a dokončana razvojno okolje. Karkoli želite, je na voljo Visual Basic, ki vam bo pomagal pri tem! Visual Basic lahko uporabite za namizni in mobilni ter oddaljeni razvoj (VB.NET), skript (VBScript) in razvoj Office (VBA !) Če ste preizkusili VBA in želite izvedeti več o tem, kako ga uporabljati, to je vadnica za vas. (Ta tečaj temelji na različici VBA, ki jo najdete v programu Microsoft Office 2010.)

Če iščete tečaj v programu Microsoft Visual Basic .NET, ste našli tudi pravo mesto. Oglejte si: Visual Basic .NET 2010 Express - vadnica "From the Ground Up"

VBA kot splošni koncept bo zajet v tem članku. VBA ima več, kot si morda mislite! Najdete lahko tudi članke o sestrah Office VBA:

V bistvu obstajata dva načina za razvoj programov, ki lahko delujejo z Officeovimi aplikacijami: VBA in VSTO. Oktobra 2003 je Microsoft predstavil izboljšanje profesionalnega programskega okolja Visual Studio .NET z imenom Visual Studio Tools for Office - VSTO. Čeprav VSTO koristi precejšnje prednosti .NET v Officeu, ostaja VBA še bolj priljubljen kot VSTO. VSTO poleg uporabe aplikacije Office zahteva uporabo profesionalne ali višje različice Visual Studio - ki vas bo verjetno stala več kot aplikacija Office, ki jo uporabljate. Ker pa je VBA integriran z gostiteljsko aplikacijo Office, ne potrebujete ničesar drugega.

instagram viewer

VBA uporabljajo predvsem pisarniški strokovnjaki, ki želijo svoje delo olajšati hitreje in lažje. Redko vidite velike sisteme, napisane v VBA. VSTO pa profesionalni programerji v večjih organizacijah uporabljajo za ustvarjanje dodatkov, ki so lahko precej prefinjeni. Vloga tretje osebe, kot je papirna družba za Word ali računovodsko podjetje za Excel, je bolj verjetno, da bo napisana z uporabo VSTO.

Microsoft v svoji dokumentaciji ugotavlja, da v osnovi obstajajo trije razlogi za uporabo VBA:

-> Avtomatizacija in ponavljanje - Računalniki lahko počnejo isto in vedno boljše in hitreje, kot lahko ljudje.

-> Razširitve interakcije uporabnikov - Ali želite predlagati, kako naj nekdo formatira dokument ali shrani datoteko? VBA to lahko stori. Ali želite preveriti, kaj nekdo vstopi? VBA lahko to tudi stori.

-> Interakcija med aplikacijami Office 2010 - Poznejši članek v tej seriji se imenuje Word in Excel, ki delujeta skupaj. Če pa je to tisto, kar potrebujete, boste morda želeli razmisliti Pisarniška avtomatizacija, torej zapisovanje sistema s pomočjo VB.NET in nato uporabo funkcij iz aplikacije Office, kot sta Word ali Excel, če je potrebno.

Microsoft je izjavil, da bodo še naprej podpirali VBA in je vidno predstavljen v Uradna Načrt za razvoj programa Microsoft Office 2010. Torej imate toliko zagotovil, kot jih Microsoft kdaj koli zagotavlja, da vaše naložbe v razvoj VBA v bližnji prihodnosti ne bodo zastarele.

Po drugi strani je VBA zadnji preostali Microsoftov izdelek, ki je odvisen od VB6 "COM" tehnologije. Zdaj je že več kot dvajset let! V človeških letih bi to postalo starejše od vampira Lestata. Morda boste to videli kot "preizkušeno, preizkušeno in resnično" ali pa si ga omislite kot "starodavno, dotrajano in zastarelo". Prvi opis sem naklonjen, vendar se morate zavedati dejstev.

Prva stvar, ki jo je treba razumeti, je odnos med VBA in Officeovimi aplikacijami, kot sta Word in Excel. Aplikacija Office je a gostitelj za VBA. VBA programa nikoli ne moremo izvesti sami. VBA je razvit v gostiteljskem okolju (z uporabo Razvijalec na strani aplikacije Office) in mora biti izveden kot del dokumenta Word, delovnega zvezka Excela, baze podatkov Access ali kakšnega drugega gostitelja Officea.

Drugačen je tudi način uporabe VBA. V aplikaciji, kot je Word, se VBA uporablja predvsem kot način za dostop do predmetov gostiteljskega okolja, kot je dostop do odstavkov v dokumentu z besedo Word. Dokument. Odstavki predmet. Vsako gostiteljsko okolje prispeva edinstvene predmete, ki niso na voljo v drugih gostiteljskih okoljih. (Na primer v dokumentu Word ni "delovnega zvezka". Delovni zvezek je edinstven za Excel.) Koda Visual Basic je predvsem tam, da omogoča uporabo predmetov, prilagojenih za vsako aplikacijo gostitelja Office.

V tem vzorcu kode (vzeti pri Microsoftu) je mogoče videti zlitje med VBA in kodo, specifično za gostitelja Vzorec baze podatkov Northwind), kjer je čista koda VBA prikazana rdeče in je prikazana koda za dostop modro. Rdeča koda bi bila enaka v Excelu ali Wordu, vendar je modra koda edinstvena za to aplikacijo Access.

Sama VBA je skoraj enaka kot že leta. Način, kako se integrira z gostiteljsko aplikacijo Office in sistemom pomoči, je bil bolj izboljšan.

Različica sistema Office 2010 ne privzeto prikazuje zaviheka Developer. Zavihek Developer vas popelje v tisti del aplikacije, v katerem lahko ustvarite programe VBA, tako da najprej morate spremeniti to možnost. Preprosto pojdite na zavihek Datoteka, Možnosti, Prilagodite trak in v glavnih zavihkih kliknite polje Razvijalca.

Sistem pomoči deluje veliko bolj gladko kot v prejšnjih različicah. Za vprašanja glede VBA lahko dobite bodisi brez povezave, bodisi iz sistema, ki je nameščen z vašo aplikacijo Office, bodisi prek spleta prek Microsofta prek interneta. Oba vmesnika sta zasnovana tako, da sta podobna:


Kliknite tukaj, če želite prikazati ilustracijo

Če je vaša internetna povezava hitra, vam bo spletna pomoč dala več in boljših informacij. Toda lokalno nameščena različica bo verjetno hitrejša in v večini primerov prav tako dobra. Morda boste želeli, da lokalna pomoč postane privzeta in nato uporabite spletno pomoč, če vam lokalna različica ne daje želenega. Najhitrejši način za spletno iskanje je preprosto, da v spustnem meniju Search izberete »All Word« (ali »All Excel« ali drugo aplikacijo). Takoj se bo sprožil splet in izvedel isto iskanje, vendar ne bo ponastavil privzete izbire.


Kliknite tukaj, če želite prikazati ilustracijo

Na naslednji strani se lotimo tega, kako dejansko ustvariti program VBA.

Ko VBA "gosti" program, kot sta Word ali Excel, program "živi" v datoteki dokumentov, ki jo uporablja gostitelj. Na primer, v Wordu lahko shranite svoj Wordov makro (je ne "makro", vendar se o terminologiji trenutno ne bomo prepirali) niti v dokumentu Word ali v Wordovi predlogi.

Predpostavimo, da je program VBA ustvarjen v programu Word (ta preprost program samo spremeni pisavo v krepko za izbrano vrstico) in se shrani v Wordov dokument:

Pod AboutMacro () ' "O Macro Makro. 'Makro je 9.9.999 posnel Dan Mabbutt. ' Izbor. HomeKey Unit: = wdStory. Izbor. EndKey Unit: = wdLine, Extend: = wdExtend. Izbor. Pisava. Krepko = wdToggle. Izbor. EndKey Unit: = wdStory. Končni pod.

V prejšnjih različicah sistema Office ste lahko jasno videli kodo VBA, shranjeno kot del dokumenta datoteko v shranjenem dokumentu Word, tako da si jo ogledate v Beležnici, kjer lahko vse v dokumentu Word videl. Ta ilustracija je bila ustvarjena s prejšnjo različico programa Word, ker je Microsoft spremenil obliko dokumenta v trenutni različici in programska koda VBA se ne prikazuje več kot navadno besedilo. A glavnica je enaka. Podobno, če ustvarite Excelovo preglednico z "Excel makro", bo shranjen kot del datoteke .xlsm.


Kliknite tukaj, če želite prikazati ilustracijo

VBA in varnost

Eden najbolj učinkovitih trikov z računalniškimi virusi v preteklosti je bil vstaviti zlonamerno kodo VBA v Officeov dokument. S prejšnjimi različicami sistema Office se virus ob odpiranju dokumenta lahko samodejno zažene in ustvari pustovanje v vašem računalniku. Ta odprta varnostna luknja v Officeu je začela vplivati ​​na prodajo Office in to je resnično pritegnilo Microsoftovo pozornost. Microsoft je s sedanjo generacijo sistema Office 2010 luknjo temeljito zataknil. Poleg omenjenih izboljšav je Microsoft izboljšal varnost Office na načine, ki jih morda niti ne opazite do strojne ravni. Če želite oklepati z uporabo VBA, ker ste slišali, da ta ni varna, se prepričajte, da je Microsoft prestopil dodaten kilometer, da bi to spremenil.

Najpomembnejša sprememba je bila ustvariti posebno vrsto dokumentov samo za dokumente Office, ki vključujejo programe VBA. Na primer, v Wordu MyWordDoc.docx ne more vsebovati programa VBA, ker Word ne bo dovolil programov v datoteki, shranjeni s pripono datoteke "docx". Datoteka mora biti shranjena kot "MyWordDoc.docm", da bo program VBA dovoljen kot del datoteke. V Excelu je razširitev datoteke ".xlsm".

Microsoft je skupaj s to izboljšano vrsto dokumentov ustvaril nov varnostni podsistem v Officeu, imenovan Trust Center. V bistvu lahko prilagodite, kako vaša aplikacija Office podrobno obravnava dokumente, ki vsebujejo kodo VBA. Center zaupanja odprete na zavihku Razvijalci v aplikaciji Office tako, da v razdelku Koda na traku kliknete Varnost makrov.


Kliknite tukaj, če želite prikazati ilustracijo

Nekatere možnosti so zasnovane za "utrjevanje" aplikacij Office, tako da se zlonamerna koda ne zažene, druge pa so zasnovan tako, da razvijalcem in uporabnikom olajša uporabo VBA brez varnosti po nepotrebnem upočasnjevanju stvari dol. Kot lahko vidite, obstaja veliko načinov, kako lahko prilagodite varnost in je skozi vse te daleč zunaj obsega tega članka. Na srečo ima Microsoftovo spletno mesto obširno dokumentacijo o tej temi. In na srečo so tudi privzete varnostne nastavitve za večino zahtev.

Ker je VBA vezan na gostiteljsko aplikacijo Office, jo morate zagnati tam. Ta tema je zajeta na naslednji strani.

Kako zaženem aplikacijo VBA

To je pravzaprav zelo dobro vprašanje, saj je prvo vprašanje, ki ga bodo zastavili uporabniki vaše aplikacije. V bistvu obstajata dva načina:

-> Če se za začetek programa ne želite uporabiti nadzora, kot je gumb, potem morate na traku uporabiti ukaz Makroni (zavihek Developer, Skupina kod). Izberite program VBA in kliknite Zaženi. Toda to se nekaterim uporabnikom morda zdi preveč. Na primer, morda ne želite, da je zavihek Developer sploh na voljo. V tem primeru ...

-> Za zagon aplikacije morate dodati nekaj, kar lahko uporabnik klikne ali vnese. V tem članku si bomo ogledali nadzor gumba. Lahko pa je to, da kliknete bližnjico, ikono v orodni vrstici ali celo dejanje vnosa podatkov. Ti se imenujejo dogodki in kar bomo napisali v tem in kasnejših člankih, je koda dogodka - programska koda, ki se samodejno zažene, ko se zgodi določen dogodek - na primer klik na gumb.

Uporabniške obrazce, kontrole obrazcev in ActiveX kontrole

Če ne izberete samo makra, je najpogostejši način za zagon programa VBA to, da kliknete gumb. Ta gumb je lahko bodisi nadzor nad obrazcem ali an ActiveX nadzor. Do neke mere so vaše odločitve odvisne od aplikacije Office, ki jo uporabljate. Excel ponuja na primer nekoliko drugačne možnosti kot Word. Toda te temeljne vrste nadzora so enake.

Ker ponuja največ prilagodljivosti, poglejmo, kaj lahko storite z Excelom 2010. Preprosto besedilno sporočilo bo vstavljeno v celico, ko kliknete več različnih gumbov samo zato, da bodo razlike bolj jasne.

Za začetek ustvarite nov delovni zvezek Excela in izberite zavihek Developer. (Če imate drugo aplikacijo Office, bi morala delovati različica teh navodil.)

Kliknite ikono Vstavi. Najprej bomo delali s tipko Nadzor obrazca.

Nadzor obrazca je starejša tehnologija. V Excelu so bili prvič predstavljeni leta 1993 v različici 5.0. Naslednje bomo delali z VBA UserForms, vendar z njimi ni mogoče uporabiti kontrolnikov obrazcev. Prav tako niso združljivi s spletom. Kontrole obrazca so nameščene neposredno na površini delovnega lista. Po drugi strani nekaterih kontrolnikov ActiveX - za katere menimo, da jih ni mogoče - uporabiti neposredno na delovnih listih.

Kontrole obrazca se uporabljajo s tehniko "klik in risanje". Kliknite nadzor gumba gumba. Kazalec miške se bo spremenil v znak plus. Enoto narišite tako, da povlečete po površini. Ko sprostite gumb miške, se odpre pogovorno okno, ki zahteva, da se ukaz poveže z gumbom.


Kliknite tukaj, če želite prikazati ilustracijo

Še posebej, če prvič ustvarite nadzor, ne boste imeli makra VBA, ki čaka, da se povežete z kliknite gumb Novo, nato pa se bo odprl urejevalnik VBA s predlaganim imenom, ki je že izpolnjeno v lupini dogodka podprogram.


Kliknite tukaj, če želite prikazati ilustracijo

Če želite dokončati to zelo preprosto aplikacijo, samo vnesite to izjavo kode VBA v pod:


Celice (2, 2) .Value = "Klikni gumb obrazca"

Tipka ActiveX je skoraj popolnoma enaka. Ena od razlik je, da VBA to kodo postavi na delovni list, ne v ločen modul. Tu je celotna koda dogodka.

Zasebni Sub CommandButton1_Click () Celice (4, 2) .Value = "Kliknil gumb ActiveX" Končni pod.

Poleg tega, da te kontrole postavite neposredno na delovni list, lahko dodate tudi Uporabniški obrazec v projekt in namesto tega postavite nadzor. Uporabniške forme - približno enako kot Windows obrazci - imajo veliko prednosti, ko lahko upravljate svoje kontrole bolj kot običajna aplikacija Visual Basic. Projektu dodajte uporabniško obliko v urejevalniku Visual Basic. Uporabite meni Pogled ali z desno tipko miške kliknite v Project Explorerju.


Kliknite tukaj, če želite prikazati ilustracijo

Privzeto za UserForm je ne prikažite obrazec. Torej, da je vidna (in da so kontrolniki na njej na voljo uporabniku), izvedite način prikazovanja obrazca. Za to sem dodal še en gumb obrazca.

Pod gumbom2_Click () UserForm1.Show. Končni pod.

Opazili boste, da je uporabniški obrazec modalno privzeto. To pomeni, da je, ko je obrazec aktiven, vse ostalo v aplikaciji neaktivno. (Klik na druge gumbe na primer ne naredi nič.) To lahko spremenite tako, da lastnost ShowModal v UserForm spremenite v False. A to nas poglablja v programiranje. Naslednji članki v tej seriji bodo razložili več o tem.

Koda za UserForm je postavljena v objekt UserForm. Če v Project Explorerju izberete Prikaži kodo za vse predmete, boste videli, da obstajajo tri ločene podprograme dogodkov Click, ki jih vsebujejo trije različni predmeti. Vsi pa so na voljo v istem delovnem zvezku.


Kliknite tukaj, če želite prikazati ilustracijo

Poleg forsiranja dogodka s klikom na gumb se VBA uporablja tudi za odzivanje na dogodke v objektih v aplikaciji gostovanja. Na primer, lahko zaznate, kdaj se v Excelu spremeni preglednica. Lahko pa zaznate, kdaj je vrstica dodana v bazo podatkov v Accessu in napišete program za ravnanje s tem dogodkom.

Poleg znanih ukaznih gumbov, besedilnih polj in drugih komponent, ki jih ves čas vidite v programih, lahko dodate komponente, ki so dejansko del vaše Excelove preglednice. v vaš Wordov dokument. Ali pa obratno. To presega "kopiranje in lepljenje". Na primer, lahko prikažete Excelovo preglednico v dokumentu Word.

VBA omogoča uporabo celotne moči ene aplikacije Office v drugi. Na primer, Word ima vgrajeno razmeroma enostavno računanje. Toda Excel - dobro - "presega" pri izračunu. Recimo, da ste želeli v svojem Wordovem dokumentu uporabiti naravni dnevnik funkcije Gamma (sorazmerno izpopolnjen matematični izračun)? Z VBA lahko prenesete vrednosti tej funkciji v Excelu in odgovor dobite nazaj v Wordovem dokumentu.

In lahko uporabite veliko več kot Officeove aplikacije! Če kliknete ikono "Več kontrolnikov", lahko vidite velik seznam stvari, ki so nameščene v računalniku. Vsi ti ne delujejo "brez", zato bi morali imeti na voljo dokumentacijo za vsako od njih, vendar vam daje predstavo o široki podpori VBA.

Od vseh funkcij v VBA je ena, ki je očitno bolj uporabna kot katera koli druga. Ugotovite, kaj je na naslednji strani.

Zadnje sem rešil najboljše! Tu je tehnika, ki se uporablja v vseh aplikacijah Office. Uporabljali ga boste veliko, zato ga tukaj obravnavamo v uvodu.

Ko začnete kodirati bolj izpopolnjene programe VBA, je ena prvih težav, ki jo boste imeli, kako izvedeti o metodah in lastnostih predmetov Office. Če pišete program VB.NET, boste pogosto iskali vzorce kode in primere za rešitev te težave. Ko pa upoštevate vse različne gostovalne aplikacije in dejstvo, da ima vsak na stotine novih predmetov, običajno ne najdete nečesa, kar bi ustrezalo tistemu, kar morate storiti.

Odgovor je "Snemanje makra ..."

Osnovna ideja je vklopiti "Record Macro" in pojdite skozi korake postopka, ki je podoben tistemu, ki ga želite opraviti v vašem programu, in nato preverite v programu VBA za kodo in ideje.

Mnogi ljudje napačno razmišljajo, da morate biti sposobni posneti točno program, ki ga potrebujete. A sploh ni nujno, da bi bili tako natančni. Običajno je dovolj dobro, da posnamete program VBA, ki je ravno "blizu", kar želite, in nato dodate spremembe kode, da bo naredil natančno delo. Tako enostavno in koristno, da bom včasih posnel ducat programov z majhnimi razlikami samo zato, da vidim, kakšne so razlike v kodi. Ko končate z ogledovanjem, ne pozabite izbrisati vseh poskusov!

Kot primer sem kliknil Record Macro v urejevalniku Word Visual Basic in vtipkal več vrstic besedila. Tu je rezultat. (Za nadaljevanje krajših vrstic so dodana nadaljevanja vrstic.)

Pod makro1 () ' 'Makro1 Makro. ' ' Izbor. TextText Text: = _. "To so časi, ki Izbor. TextText Text: = _. "poskusite moške duše. The " Izbor. TextText Text: = _. "poletni vojak" Izbor. TextText Text: = _. "in sonc domoljub" Izbor. TextText Text: = _. "se bo v teh časih skrčil od" Izbor. TextText Text: = _. "služba svoje države." Izbor. MoveUp enota: = wdLine, štetje: = 1. Izbor. HomeKey Unit: = wdLine. Izbor. MoveRight enota: = wdCharacter, _. Štetje: = 5, podaljšaj: = wdExtend. Izbor. Pisava. Krepko = wdToggle. Končni pod.

Nihče ne študira VBA samo zase. Vedno ga uporabljate skupaj z določeno aplikacijo Office. Za nadaljevanje učenja tukaj obstajajo članki, ki prikazujejo VBA, ki se uporablja tako z Wordom kot s Excelom:

-> Uvod v uporabo VBA: Word Delovni partner

-> Uvod v uporabo VBA: Excelov delovni partner