„Visual Basic“ naudojimo programoms vadovas

Viena iš išskirtinių „Visual Basic“ savybių yra ta, kad tai: baigta vystymosi aplinka. Kad ir ką norite padaryti, „Visual Basic“ yra „skonio“, kuris padės jums atlikti darbą! „Visual Basic“ galite naudoti staliniams kompiuteriams, mobiliesiems ir nuotoliniams įrenginiams (VB.NET), scenarijams (VBScript) ir „Office“ kurti (VBA !) Jei išbandėte VBA ir norite sužinoti daugiau apie tai, kaip ja naudotis, tai jums pamoka. (Šis kursas yra pagrįstas VBA versija, kurią rasite „Microsoft Office 2010“.)

Jei ieškote kurso „Microsoft Visual Basic .NET“, taip pat radote reikiamą vietą. Patikrinkite: „Visual Basic .NET 2010 Express“ - vadovėlis „Nuo pat pradžių“

Šiame straipsnyje bus aptarta VBA kaip bendra sąvoka. VBA yra daugiau nei galite pamanyti! Taip pat galite rasti straipsnių apie „Office VBA“ seseris:

Iš esmės yra du būdai, kaip sukurti programas, galinčias dirbti su „Office“ programomis: VBA ir VSTO. 2003 m. Spalio mėn. „Microsoft“ pristatė profesinės programavimo aplinkos „Visual Studio .NET“ patobulinimą pavadinimu „Visual Studio Tools for Office“ - VSTO. Tačiau net jei VSTO pasinaudoja dideliais .NET Office pranašumais, VBA išlieka populiaresnė nei VSTO. VSTO, be „Office“ programos, reikia naudoti ir „Professional“ ar aukštesnę „Visual Studio“ versiją, kuri jums tikriausiai kainuos daugiau nei jūsų naudojama „Office“ programa. Bet kadangi VBA yra integruota su pagrindinio kompiuterio programa, jums nieko daugiau nereikia.

instagram viewer

VBA daugiausia naudoja „Office“ ekspertai, norintys savo darbą padaryti greitesnį ir lengvesnį. Jūs retai matote dideles sistemas, parašytas VBA. Kita vertus, VSTO naudojasi didesnių organizacijų profesionalūs programuotojai, kad sukurtų priedus, kurie gali būti gana sudėtingi. Trečiosios šalies, pavyzdžiui, „Word“ popieriaus įmonės ar „Excel“ apskaitos įmonės, paraiška yra didesnė tikimybė, kad ji bus parašyta naudojant VSTO.

Savo dokumentuose „Microsoft“ pažymi, kad iš esmės yra trys priežastys naudoti VBA:

-> Automatika ir pasikartojimas - kompiuteriai tą patį gali atlikti daug geriau ir greičiau, nei žmonės.

-> Vartotojo sąveikos plėtiniai - ar norite tiksliai pasiūlyti, kaip kažkas turėtų formatuoti dokumentą ar išsaugoti failą? VBA gali tai padaryti. Ar norite patvirtinti, ką kažkas įveda? Tą gali padaryti ir VBA.

-> „Office 2010“ programų sąveika - vėlesnis šios serijos straipsnis pavadintas „Word“ ir „Excel“ kartu dirbant. Bet jei tai yra tai, ko jums reikia, galbūt norėsite apsvarstyti Biuro automatizavimas, tai yra, sistemos rašymas naudojant VB.NET ir tada, kai reikia, naudojant „Office“ programos, tokios kaip „Word“ ar „Excel“, funkcijos.

„Microsoft“ pareiškė, kad jie ir toliau rems VBA ir ji yra gerai matoma Oficialus „Microsoft Office 2010“ plėtros planas. Taigi jūs turite tiek garantijų, kiek „Microsoft“ kada nors teikia, kad artimiausiu metu jūsų investicijos į VBA plėtrą nebus pasenusios.

Kita vertus, VBA yra paskutinis likęs „Microsoft“ produktas, priklausantis nuo VB6 „COM“ technologijos. Dabar jau daugiau nei dvidešimt metų! Žmonijos metais tai padarytų vyresnį nei Vampyro Lestatas. Galite pamatyti, kad tai „išbandyta, patikrinta ir tikra“, arba galite galvoti apie tai kaip „senovinį, susidėvėjusį ir pasenusį“. Aš linkęs į pirmąjį aprašymą, bet jūs turėtumėte žinoti faktus.

Pirmas dalykas, kurį reikia suprasti, yra ryšys tarp VBA ir „Office“ programų, tokių kaip „Word“ ir „Excel“. „Office“ programa yra šeimininkas už VBA. VBA programa niekada negali būti vykdoma savaime. VBA kuriamas priimančiojoje aplinkoje (naudojant Programuotojas skirtuką „Office“ programos juostoje) ir jis turi būti vykdomas kaip „Word“ dokumento, „Excel“ darbaknygės, „Access“ duomenų bazės ar kito „Office“ pagrindinio kompiuterio dalis.

VBA realus panaudojimo būdas taip pat skiriasi. Tokiose programose kaip „Word“ VBA pirmiausia naudojamas kaip būdas pasiekti pagrindinės aplinkos objektus, pavyzdžiui, pasiekti dokumento pastraipas naudojant „Word“. Dokumentas. Pastraipų objektas. Kiekviena pagrindinė aplinka sukuria unikalius objektus, kurių nėra kitoje pagrindinėje aplinkoje. (Pvz., „Word“ dokumente nėra „darbaknygės“. Darbo knyga yra unikali „Excel“.) „Visual Basic“ kodas skirtas tam, kad būtų galima naudoti objektus, pritaikytus kiekvienai „Office“ pagrindinei programai.

Sujungimą tarp VBA ir konkretaus pagrindinio kodo galima pamatyti šiame kodo pavyzdyje (paimtame iš „Microsoft“ Šiaurinio vėjo pavyzdžių duomenų bazė), kur grynai VBA kodas rodomas raudonai, o konkretaus prieigos kodas rodomas mėlyna. Raudonasis kodas būtų tas pats „Excel“ ar „Word“, bet mėlynasis kodas yra unikalus šiai „Access“ programai.

Pati VBA yra beveik tokia pati, kokia buvo metų metus. Tai, kaip ji integruojasi su pagrindinio kompiuterio programa ir pagalbos sistema, buvo patobulinta.

2010 m. „Office“ versija pagal numatytuosius nustatymus nerodo skirtuko „Kūrėjas“. Skirtuke „Kūrėjas“ pateksite į programos dalį, kurioje galite kurti VBA programas, taigi pirmiausia turite pakeisti šią parinktį. Tiesiog eikite į skirtuką Failas, Parinktys, Tinkinti juostelę ir pagrindiniuose skirtukuose spustelėkite laukelį Kūrėjas.

Pagalbos sistema veikia daug sklandžiau nei ji buvo ankstesnėse versijose. Pagalbos dėl VBA klausimų galite gauti neprisijungę, iš sistemos, įdiegtos kartu su „Office“ programa, arba prisijungę iš „Microsoft“ internetu. Abi sąsajos yra sukurtos atrodyti panašiai:


Spustelėkite čia, norėdami pamatyti iliustraciją

Jei jūsų interneto ryšys spartus, internetinė pagalba suteiks daugiau ir geresnės informacijos. Bet vietoje įdiegta versija greičiausiai bus greitesnė ir daugeliu atvejų ji yra tokia pati gera. Galbūt norėsite, kad vietinė žinynas būtų numatytasis, tada naudokitės internetine žinute, jei vietinė versija neduoda to, ko norite. Greičiausias būdas prisijungti prie interneto yra tiesiog išskleidžiamajame žinyno meniu pasirinkite „Visas žodis“ (arba „Visa Excel“ ar kita programa). Tai iš karto prisijungs prie interneto ir atliks tą pačią paiešką, tačiau tai neatstatys numatytojo pasirinkimo.


Spustelėkite čia, norėdami pamatyti iliustraciją

Kitame puslapyje mes pradedame nuo to, kaip iš tikrųjų sukurti VBA programą.

Kai VBA „priglobia“ tokia programa kaip „Word“ ar „Excel“, programa „gyvena“ dokumento faile, kurį naudoja pagrindinis kompiuteris. Pvz., „Word“ galite išsaugoti „Word makro“ (tai yra ne „makro“, tačiau šiuo metu nesigilinsime į terminiją) „Word“ dokumente arba „Word“ šablone.

Dabar tarkime, kad ši VBA programa yra sukurta „Word“ (ši paprasta programa tiesiog keičia pasirinktos eilutės šriftą paryškintu šriftu) ir išsaugoma „Word“ dokumente:

„Sub AboutMacro“ () ' „Apie„ Macro Macro “. 'Makro įrašytas Dano Mabbutt'as, 1998 9 9. ' Pasirinkimas. Pagrindinis rakto blokas: = wdStory. Pasirinkimas. „EndKey“ vienetas: = „wdLine“, išplėsti: = „wdExtend“. Pasirinkimas. Šriftas. Paryškintas = wdToggle. Pasirinkimas. „EndKey“ vienetas: = wdStory. Pabaigos poskyris.

Ankstesnėse „Office“ versijose galėjote aiškiai pamatyti VBA kodą, saugomą kaip dokumento dalį failą išsaugotame „Word“ dokumente, peržiūrėdami jį užrašų knygelėje, kur gali viskas, kas yra „Word“ dokumente matyta. Ši iliustracija buvo parengta su ankstesne „Word“ versija, nes „Microsoft“ pakeitė dabartinės versijos dokumento formatą, o VBA programos kodas daugiau neberodomas kaip paprastas tekstas. Bet principas tas pats. Panašiai, jei sukursite „Excel“ skaičiuoklę su „Excel makrokomanda“, ji bus išsaugota kaip .xlsm failo dalis.


Spustelėkite čia, norėdami pamatyti iliustraciją

VBA ir saugumas

Vienas iš efektyviausių kompiuterinių virusų triukų praeityje buvo įterpti kenksmingą VBA kodą į „Office“ dokumentą. Naudojant ankstesnes „Office“ versijas, atidarius dokumentą, virusas galėjo automatiškai paleisti ir sukelti pavojų jūsų kompiuteryje. Ši atvira „Office“ saugos spraga pradėjo daryti įtaką „Office“ pardavimams ir tai tikrai atkreipė „Microsoft“ dėmesį. Turėdama dabartinę 2010 m. „Office“ kartą, „Microsoft“ kruopščiai užpildė skylę. Be čia paminėtų patobulinimų, „Microsoft“ patobulino „Office“ saugą tokiu būdu, kokio jūs net nepastebėsite iki aparatūros lygio. Jei nenorite naudoti VBA, nes girdėjote, kad tai nėra saugu, būkite tikri, kad „Microsoft“ nuėjo dar daugiau mylių, kad pakeistumėte tai dabar.

Svarbiausias pakeitimas buvo sukurti specialų dokumentų tipą tik tiems „Office“ dokumentams, kuriuose yra VBA programos. Pvz., „Word“ programoje „MyWordDoc.docx“ negali būti VBA programos, nes „Word“ neleis programoms, esančioms faile, išsaugotam su „docx“ failo plėtiniu. Failas turi būti išsaugotas kaip „MyWordDoc.docm“, kad VBA programavimas būtų leidžiamas kaip failo dalis. „Excel“ failo plėtinys yra „.xlsm“.

Siekdama įgyvendinti šį patobulintą dokumentų tipą, „Microsoft“ sukūrė naują saugos posistemį „Office“ pavadinimu „Pasitikėjimo centras“. Iš esmės galite tinkinti, kaip jūsų „Office“ programa labai smulkiai elgiasi su dokumentais, kuriuose yra VBA kodas. „Office“ programos skirtuke „Kūrėjas“ atidarote „Pasitikėjimo centrą“, juostos skiltyje „Kodas“ spustelėdami „Makro sauga“.


Spustelėkite čia, norėdami pamatyti iliustraciją

Kai kurios parinktys yra skirtos „sukietinti“ jūsų „Office“ programas, kad kenksmingas kodas neveiktų, o kitos yra sukurta tam, kad kūrėjams ir vartotojams būtų lengviau naudotis VBA neturint saugumo be reikalo sulėtinti dalykų žemyn. Kaip matote, yra daugybė būdų, kaip tinkinti saugumą, ir juos visus ištirti yra toli už šio straipsnio taikymo srities. Laimei, „Microsoft“ svetainėje yra išsami šios temos dokumentacija. Taip pat pasisekė, kad numatytieji saugos parametrai tinka daugeliui reikalavimų.

Kadangi VBA yra susieta su pagrindinio kompiuterio programa, jūs turite ją ten vykdyti. Ši tema yra aptariama pradedant kitame puslapyje.

Kaip paleisti VBA programą

Tai iš tikrųjų labai geras klausimas, nes tai yra pirmasis, kurio paklaus jūsų programos vartotojai. Iš esmės yra du būdai:

-> Jei nuspręsite nenaudoti valdiklio, pavyzdžiui, mygtuko, programai paleisti, tada turite naudoti juostą „Macros“ komandą (skirtukas „Kūrėjas“, „Kodo grupė“). Pasirinkite VBA programą ir spustelėkite Vykdyti. Tačiau kai kuriems jūsų vartotojams tai gali atrodyti per daug. Pvz., Galite nenorėti, kad skirtukas „Kūrėjas“ jiems netgi būtų prieinamas. Tuo atveju ...

-> Turite pridėti tai, ką vartotojas gali spustelėti ar įvesti, kad paleistų programą. Šiame straipsnyje apžvelgsime mygtuko valdymą. Bet tai gali būti spustelėjimas nuorodą, piktogramą įrankių juostoje ar net duomenų įvedimas. Jie vadinami įvykiai ir ką mes rašysime šiame ir vėlesniuose straipsniuose įvykio kodas - programos kodas, kuris automatiškai paleidžiamas įvykus tam tikram įvykiui, pavyzdžiui, spustelėjus mygtuko valdiklį.

„UserForms“, formos valdikliai ir „ActiveX“ valdikliai

Jei pasirenkate ne tik makrokomandą, labiausiai paplitęs būdas paleisti VBA programą yra paspausti mygtuką. Tas mygtukas gali būti ir formos kontrolė arba „ActiveX“ valdymas. Tam tikru laipsniu jūsų pasirinkimai priklauso nuo jūsų naudojamos „Office“ programos. „Excel“ siūlo šiek tiek kitokius pasirinkimus nei, pavyzdžiui, „Word“. Tačiau šie pagrindiniai kontrolės tipai yra vienodi.

Kadangi tai suteikia didžiausią lankstumą, pažvelkime, ką galite padaryti naudodami „Excel 2010“. Paprastas tekstinis pranešimas bus įterptas į langelį, kai spustelėsite kelis skirtingus mygtukus, kad skirtumai būtų aiškesni.

Norėdami pradėti, sukurkite naują „Excel“ darbaknygę ir pasirinkite skirtuką „Kūrėjas“. (Jei turite kitą „Office“ programą, turėtų veikti šių instrukcijų variantai.)

Spustelėkite įterpimo piktogramą. Pirmiausia dirbsime su mygtuku „Formos valdymas“.

Formos valdymas yra senesnė technologija. „Excel“ versijoje jie pirmą kartą buvo pristatyti 5.0 versijoje 1993 m. Toliau mes dirbsime su „VBA UserForms“, tačiau formos valdikliai negali būti naudojami su jais. Jie taip pat nesuderinami su žiniatinkliu. Formos valdikliai dedami tiesiai ant darbalapio paviršiaus. Kita vertus, kai kurie „ActiveX“ valdikliai, kuriuos mes laikomės toliau, negali būti naudojami tiesiogiai darbalapiuose.

Formos valdikliai naudojami naudojant „spragtelėk ir nupiešk“ metodą. Spustelėkite mygtuko formos valdiklį. Pelės žymiklis pasikeis į pliuso ženklą. Nubrėžkite valdiklį, vilkdami per paviršių. Atleidus pelės mygtuką pasirodo dialogo langas, kuriame prašoma makrokomandos komandos, kad būtų galima prisijungti su mygtuku.


Spustelėkite čia, norėdami pamatyti iliustraciją

Ypač kai pirmą kartą sukuriate valdiklį, VBA makrokomandos laukiate neprisijungus mygtuką, todėl spustelėkite Naujas, o VBA redaktorius atsidarys su jau įvestu įvykio apvalkalu pasiūlytu pavadinimu paprogramė.


Spustelėkite čia, norėdami pamatyti iliustraciją

Norėdami užpildyti šią labai paprastą programą, tiesiog įveskite šį VBA kodo teiginį apačioje:


Ląstelės (2, 2) .Value = "Spustelėtas formos mygtukas"

„ActiveX“ mygtukas yra beveik tas pats. Vienas skirtumas yra tas, kad VBA šį kodą įdeda į darbalapį, o ne į atskirą modulį. Čia yra visas įvykio kodas.

Privatus antrinis „CommandButton1_Click“) Langeliai (4, 2) .Value = "Paspaustas„ ActiveX mygtukas "" Pabaigos poskyris.

Be šių valdiklių įdėjimo tiesiai ant darbalapio, galite pridėti a „UserForm“ į projektą ir vietoj to nustatykite valdiklius. „UserForms“ - beveik tas pats, kas „Windows“ formos - turi daug privalumų, nes gali valdyti savo valdiklius labiau kaip įprasta „Visual Basic“ programa. Pridėkite „UserForm“ prie projekto „Visual Basic“ redaktoriuje. Naudokite „View“ meniu arba dešiniuoju pelės mygtuku spustelėkite „Project Explorer“.


Spustelėkite čia, norėdami pamatyti iliustraciją

Numatytasis „UserForm“ yra ne parodyti formą. Taigi, kad jis būtų matomas (ir vartotojui suteiktų jo valdiklius), vykdykite formos „Rodyti“ metodą. Tiesiog pridėjau dar vieną formos mygtuką.

„Sub Button2_Click“) „UserForm1.Show“. Pabaigos poskyris.

Jūs pastebėsite, kad „UserForm“ yra modalinis pagal nutylėjimą. Tai reiškia, kad kai forma aktyvi, visa kita programoje yra neaktyvi. (Pavyzdžiui, spustelėję kitus mygtukus, nieko nepadarysite.) Tai galite pakeisti pakeisdami „UserForm“ savybę „ShowModal“ į „False“. Bet tai mus gilina į programavimą. Tolesni šios serijos straipsniai paaiškins daugiau.

„UserForm“ kodas dedamas į „UserForm“ objektą. Jei „Project Explorer“ pasirinksite „View Code“ visiems objektams, pamatysite, kad yra trys atskiros „Click“ įvykio paprogramės, esančios trijuose skirtinguose objektuose. Bet jie visi prieinami ta pačiai darbo knygai.


Spustelėkite čia, norėdami pamatyti iliustraciją

Be to, kad priverstinis įvykis paspaudžiamas mygtuką, VBA taip pat naudojamas reaguoti į įvykius prieglobos programos objektuose. Pvz., Galite aptikti, kai „Excel“ keičiasi skaičiuoklė. Arba galite aptikti, kai prie duomenų bazės „Access“ pridedama eilutė, ir parašyti programą, skirtą tvarkyti tą įvykį.

Be jau žinomų komandų mygtukų, teksto laukų ir kitų komponentų, kuriuos visą laiką matote programose, galite pridėti komponentų, kurie iš tikrųjų yra jūsų „Excel“ skaičiuoklės dalis į jūsų „Word“ dokumentas. Arba atlikite atvirkščiai. Tai daug daugiau nei „kopijuoti ir įklijuoti“. Pvz., „Word“ dokumente galite parodyti „Excel“ skaičiuoklę.

VBA leidžia naudoti visą vienos „Office“ programos galią kitoje. Pavyzdžiui, „Word“ turi gana paprastą skaičiavimo galimybę. Bet „Excel“ - gerai - „išsiskiria“ skaičiuojant. Tarkime, kad savo „Word“ dokumente norėjote naudoti natūralų „Gamma“ funkcijos žurnalą (gana sudėtingas matematikos skaičiavimas)? Naudodami VBA galite perduoti reikšmes tai funkcijai programoje „Excel“ ir gauti atsakymą į savo „Word“ dokumentą.

Ir jūs galite naudoti daug daugiau nei „Office“ programos! Spustelėję piktogramą „Daugiau valdiklių“, galite pamatyti nemažą dalykų, įdiegtų jūsų kompiuteryje, sąrašą. Ne visi šie darbai veikia „ne pagal galimybes“ ir jūs turėtumėte turėti kiekvieno iš jų dokumentus, tačiau jis suteikia jums supratimą apie tai, kokia plati VBA parama yra.

Iš visų VBA funkcijų yra viena, kuri yra akivaizdžiai naudingesnė nei bet kuri kita. Sužinokite, kas tai yra kitame puslapyje.

Aš išsaugojau geriausią paskutinį kartą! Štai tokia metodika, kuri taikoma visoms „Office“ programoms. Jūs pastebėsite, kad daug juo naudojatės, todėl mes tai aprašome čia, Įvade.

Pradėjus koduoti sudėtingesnes VBA programas, viena iš pirmųjų problemų, su kuria susidursite, yra tai, kaip sužinoti apie „Office“ objektų metodus ir savybes. Jei rašote VB.NET programą, dažnai ieškokite kodų pavyzdžių ir pavyzdžių, kaip išspręsti šią problemą. Tačiau kai atsižvelgiama į visas skirtingas prieglobos programas ir į tai, kad kiekvienoje iš jų yra šimtai naujų objektų, paprastai nerandate to, kas tiksliai atitinka tai, ką turite padaryti.

Atsakymas yra „Įrašyti makrokomandą ...“

Pagrindinė idėja yra įjungti „Įrašyti makrokomandą“, pereiti proceso veiksmus, panašius į tai, ką norite atlikti savo programoje, ir tada patikrinti, ar VBA programoje nėra kodo ir idėjų.

Daugelis žmonių daro klaidą galvodami, kad turite mokėti įrašyti būtent jums reikalingą programą. Bet visai nebūtina būti toks tikslus. Paprastai pakanka įrašyti VBA programą, kuri yra „artima“ norimam, ir tada pridėti kodo modifikacijas, kad ji tiksliai atliktų darbą. Tai taip lengva ir naudinga, kad kartais įrašysiu keliolika programų su nedideliais skirtumais, norėdamas tik pamatyti, kokie yra kodo skirtumai. Nepamirškite ištrinti visų eksperimentų, kai baigsite juos žiūrėti!

Kaip pavyzdį spustelėjau Įrašyti makrokomandą „Word Visual Basic“ redaktoriuje ir įvedžiau kelias teksto eilutes. Štai rezultatas. (Pridėta eilutės tęsinių, kad jie būtų trumpesni.)

„Sub Macro1“ () ' „Macro1“ makrokomanda. ' ' Pasirinkimas. „TypeText“ tekstas: = _. "Tai yra tie laikai, kai" Pasirinkimas. „TypeText“ tekstas: = _. „išbandykite vyrų sielas. „ Pasirinkimas. „TypeText“ tekstas: = _. "vasaros kareivis" Pasirinkimas. „TypeText“ tekstas: = _. "ir saulės patriotas" Pasirinkimas. „TypeText“ tekstas: = _. "šiais laikais sumažės nuo" Pasirinkimas. „TypeText“ tekstas: = _. "savo šalies tarnybai". Pasirinkimas. „MoveUp Unit“: = wdLine, Count: = 1. Pasirinkimas. Pagrindinis rakto blokas: = wdLine. Pasirinkimas. „MoveRight“ vienetas: = „wdCharacter“, _. Skaičius: = 5, prailginti: = wdExtend. Pasirinkimas. Šriftas. Paryškintas = wdToggle. Pabaigos poskyris.

Niekas nestudijuoja VBA vien dėl savęs. Jūs visada ja naudojatės kartu su konkrečia „Office“ programa. Taigi, jei norite tęsti mokymąsi, čia yra straipsnių, kuriuose aprašoma VBA, naudojama kartu su „Word“ ir „Excel“:

-> Darbo su VBA pradžia: „Word“ darbo partneris

-> Darbo su VBA pradžia: „Excel“ darbo partneris