Ръководство за използване на Visual Basic за приложения

Едно от най-забележителните качества на Visual Basic е, че е a пълен среда за развитие. Каквото и да искате да направите, има „аромат“ на Visual Basic, който да ви помогне да свършите работата! Можете да използвате Visual Basic за настолна и мобилна и отдалечена разработка (VB.NET), скриптове (VBScript) и разработване на Office (VBA !) Ако сте пробвали VBA и искате да знаете повече за това как да го използвате, това е урокът за вас. (Този курс се основава на версията на VBA, открита в Microsoft Office 2010.)

Ако търсите курс в Microsoft Visual Basic .NET, вие също сте намерили правилното място. Вижте: Visual Basic .NET 2010 Express - Урок "От земята нагоре"

VBA като общо понятие ще бъде разгледано в тази статия. В VBA има повече, отколкото може би си мислите! Можете също така да намерите статии за сестрите на Office VBA:

По принцип има два начина за разработване на програми, които могат да работят с Office приложения: VBA и VSTO. През октомври 2003 г. Microsoft представи подобрение в професионалната среда за програмиране Visual Studio .NET, наречено Visual Studio Tools for Office - VSTO. Но въпреки че VSTO използва значителните предимства на .NET в Office, VBA остава по-популярен от VSTO. VSTO изисква използването на Професионалната или по-висока версия на Visual Studio - което вероятно ще ви струва повече от приложението Office, което използвате - в допълнение към приложението Office. Но тъй като VBA е интегрирана с хост приложението Office, не ви трябва нищо друго.

instagram viewer

VBA се използва предимно от експерти в Office, които искат да улеснят работата си по-бързо и по-лесно. Рядко виждате големи системи, написани на VBA. VSTO, от друга страна, се използва от професионални програмисти в по-големи организации за създаване на добавки, които могат да бъдат доста сложни. Заявление от трета страна, като хартиена компания за Word или счетоводна фирма за Excel, е по-вероятно да бъде написано с VSTO.

В своята документация Microsoft отбелязва, че има основно три причини за използване на VBA:

-> Автоматизация и повторение - Компютрите могат да правят едно и също нещо многократно по-добре и по-бързо, отколкото хората могат.

-> Разширения за взаимодействие с потребители - Искате ли да подскажете как точно някой да форматира документ или да запази файл? VBA може да направи това. Искате ли да потвърдите какво влиза някой? VBA може и това.

-> Взаимодействие между приложения за Office 2010 - По-късна статия от тази поредица се нарича Word и Excel Работещи заедно. Но ако това е, което ви трябва, може да искате да помислите Офис автоматизация, тоест да напишете системата с помощта на VB.NET и след това да използвате функциите от приложение на Office като Word или Excel, ако е необходимо.

Microsoft заяви, че те ще продължат да поддържат VBA и тя е застъпена на видно място в Официален Пътна карта за развитие на Microsoft Office 2010. Така че имате толкова увереност, колкото някога Microsoft предоставя, че инвестицията ви в разработката на VBA няма да остарее в близко бъдеще.

От друга страна, VBA е последният останал продукт на Microsoft, който зависи от VB6 "COM" технологията. Вече е над двадесет години! В човешки години това би го направило по-старо от Лестата вампира. Може да видите, че това е "изпитано, изпитано и вярно" или можете да го мислите като "древен, износен и остарял". Склонен съм да предпочитам първото описание, но трябва да сте наясно с фактите.

Първото нещо, което трябва да разберете, е връзката между VBA и Office приложения като Word и Excel. Приложението за Office е a домакин за VBA. VBA програма никога не може да се изпълни сама. VBA е разработен в хост средата (използвайки Разработчик в лентата на приложението на Office) и той трябва да бъде изпълнен като част от документ на Word, работна книга в Excel, база данни на Access или някакъв друг хост на Office.

Начинът на използване на VBA също е различен. В приложение като Word, VBA се използва главно като начин за достъп до обектите на хост средата, като например достъп до параграфите в документ с Word на Word. Документ. Параграфите обект. Всяка хост среда допринася за уникални обекти, които не са налични в другите среди на хоста. (Например в работен документ на Word няма „работна книга“. Работната книга е уникална за Excel.) Кодът Visual Basic е главно там, за да направи възможно използването на обекти, персонализирани за всяко хост приложение на Office.

Сравнението между VBA и специфичен за хоста код може да се види в тази кодова извадка (взета от Microsoft Примерна база данни на Northwind), където чисто VBA кодът е показан в червено и се показва специфичен код за достъп син. Червеният код би бил същият в Excel или Word, но синият код е уникален за това приложение за достъп.

Самата VBA е почти същата, каквато е от години. Начинът, по който се интегрира с хост приложението Office и системата за помощ е подобрен повече.

Версията на Office 2010 на Office не показва раздела Developer по подразбиране. Разделът Developer ви отвежда в частта от приложението, където можете да създавате VBA програми, така че първото нещо, което трябва да направите, е да промените тази опция. Просто отидете на раздела Файл, Опции, Персонализирайте лентата и щракнете върху полето за програмисти в Главните раздели.

Помощната система работи много по-плавно, отколкото в предишните версии. Можете да получите помощ за вашите въпроси с VBA или офлайн, от система, която е инсталирана с вашето приложение за Office, или онлайн от Microsoft по интернет. Двата интерфейса са проектирани да приличат много:


Щракнете тук, за да покажете илюстрацията

Ако вашата интернет връзка е бърза, онлайн помощта ще ви даде повече и по-добра информация. Но локално инсталираната версия вероятно ще бъде по-бърза и в повечето случаи е също толкова добра. Може да искате да направите локалната помощ по подразбиране и след това да използвате онлайн помощта, ако местната версия не ви даде това, което искате. Най-бързият начин да влезете в интернет е просто да изберете „All Word“ (или „All Excel“ или друго приложение) от падащото меню Search в помощ. Това веднага ще влезе в интернет и ще извърши същото търсене, но няма да нулира вашия избор по подразбиране.


Щракнете тук, за да покажете илюстрацията

На следващата страница започваме с това как всъщност да създадем VBA програма.

Когато VBA се "хоства" от приложение като Word или Excel, програмата "живее" във файла с документи, който се използва от хоста. Например, в Word можете да запишете вашия "Word макрос" (това е не „макрос“, но няма да се караме за терминологията в момента) нито в документ на Word, нито в Word шаблон.

Сега нека предположим, че тази програма VBA е създадена в Word (тази проста програма просто променя шрифта с удебелен шрифт за избран ред) и се записва в документ на Word:

Sub AboutMacro () ' „За Макро Макрос. „Макрос записан на 9.9.999 г. от Дан Маббут. ' Избор. HomeKey Unit: = wdStory. Избор. EndKey Unit: = wdLine, Extend: = wdExtend. Избор. Font. Bold = wdToggle. Избор. EndKey Unit: = wdStory. Край Sub.

В по-ранните версии на Office можете ясно да видите кода VBA, съхраняван като част от документа файл в записания Word документ, като го прегледате в Notepad, където всичко в Word документа може виждал. Тази илюстрация е създадена с предишна версия на Word, защото Microsoft промени формата на документа в текущата версия и програмният код на VBA вече не се показва ясно като обикновен текст. Но главницата е същата. По същия начин, ако създадете електронна таблица в Excel с "макрос на Excel", тя ще бъде записана като част от .xlsm файл.


Щракнете тук, за да покажете илюстрацията

VBA и сигурност

Един от най-ефективните трикове за компютърни вируси в миналото беше да вмъкнете злонамерен VBA код в документ на Office. С предишните версии на Office, когато документ беше отворен, вирусът може да се стартира автоматично и да създаде поразия на вашата машина. Този отворен отвор за сигурност в Office започваше да влияе върху продажбите на Office и това наистина привлече вниманието на Microsoft. С настоящото поколение на Office през 2010 г. Microsoft старателно запуши дупката. В допълнение към подобренията, споменати тук, Microsoft е подобрила сигурността на Office по начини, които е възможно да не забележите дори до хардуерното ниво. Ако се колебаете да използвате VBA, защото чухте, че не е безопасно, уверете се, че Microsoft е изминал допълнителната миля, за да промени това сега.

Най-важната промяна беше да се създаде специален тип документ само за документи от Office, които включват VBA програми. Например в Word, MyWordDoc.docx не може да съдържа VBA програма, тъй като Word няма да позволи програми във файл, записан с разширение "docx". Файлът трябва да бъде запазен като "MyWordDoc.docm", за да може да бъде разрешено VBA програмирането като част от файла. В Excel разширението на файла е ".xlsm".

За да допълни този подобрен тип документ, Microsoft създаде нова подсистема за сигурност в Office, наречена Trust Center. По същество можете да персонализирате как вашето приложение за Office се отнася с документи, съдържащи VBA код, с подробни подробности. Отваряте Центъра за доверие от раздела за програмисти в приложението на Office, като щракнете върху Макрозащита в секцията Код на лентата.


Щракнете тук, за да покажете илюстрацията

Някои от опциите са предназначени да „втвърдят“ приложенията ви в Office, така че злонамерен код да не се стартира и други създаден да улесни разработчиците и потребителите да използват VBA, без да имат сигурност излишно забавяне на нещата надолу. Както можете да видите, има много начини, по които можете да персонализирате сигурността и преминаването през всички тях е далеч извън обхвата на тази статия. За щастие сайтът на Microsoft има обширна документация по тази тема. И също така е щастлив, че настройките за сигурност по подразбиране са добри за повечето изисквания.

Тъй като VBA е свързан с хост приложението Office, трябва да го стартирате там. Тази тема е разгледана от следващата страница.

Как да изпълня VBA приложение

Това всъщност е много добър въпрос, защото това е първият, който потребителите на вашето приложение ще зададат. По принцип има два начина:

-> Ако решите да не използвате контрола, като бутон, за стартиране на програмата, тогава трябва да използвате командата Macros на лентата (раздел Разработчик, Кодова група). Изберете програмата VBA и щракнете върху Изпълни. Но това може да изглежда малко прекалено много за някои от вашите потребители. Например, може да не искате раздела за програмисти дори да им е достъпен. В този случай ...

-> Трябва да добавите нещо, което потребителят може да щракне или въведе, за да стартира приложението. В тази статия ще разгледаме контрола на бутона. Но това може да бъде щракване върху пряк път, икона на лента с инструменти или дори актът за въвеждане на данни. Те се наричат събития и това, което ще напишем в тази и по-късните статии е код на събитието - програмен код, който се стартира автоматично, когато се случи някакво конкретно събитие - като щракване върху бутон за управление.

UserForms, Form Controls и ActiveX Controls

Ако не просто избирате макрос, най-разпространеният начин да стартирате VBA програма е да щракнете върху бутон. Този бутон може да бъде или контрол на формата или а ActiveX контрол. До известна степен вашият избор зависи от приложението Office, което използвате. Например, Excel предлага малко по-различен избор от Word. Но тези основни видове контроли са същите.

Тъй като предлага най-голяма гъвкавост, нека разгледаме какво можете да направите с Excel 2010. Едно просто текстово съобщение ще бъде поставено в клетка, когато се натиснат няколко различни бутона, само за да станат по-ясни разликите.

За да започнете, създайте нова работна книга на Excel и изберете раздела Developer. (Ако имате друго приложение за Office, вариант на тези инструкции трябва да работи.)

Щракнете върху иконата Вмъкване. Първо ще работим с бутона за контрол на формуляри.

Формите за контрол са по-старата технология. В Excel те бяха представени за първи път във версия 5.0 през 1993 година. След това ще работим с VBA UserForms, но контролите на формулярите не могат да се използват с тях. Те също не са съвместими с мрежата. Контролите на формата се поставят директно върху повърхността на работния лист. От друга страна, някои ActiveX контроли - които считаме за следващи - не могат да се използват директно на работни листове.

Контролите на формулярите се използват с техника "щракване и рисуване". Щракнете върху бутона за управление на формуляра. Показалецът на мишката ще се промени в знак плюс. Начертайте контрола, като влачите върху повърхността. Когато пуснете бутона на мишката, се появява диалогов прозорец с искане за макро команда за свързване с бутона.


Щракнете тук, за да покажете илюстрацията

Особено когато създавате контрола за първи път, няма да имате макрос VBA, който чака да бъде свързан с бутон, така че щракнете върху Ново и VBA редактора ще се отвори с предложеното име, вече попълнено в черупката на събитие подпрограма.


Щракнете тук, за да покажете илюстрацията

За да завършите това много просто приложение, просто въведете този код на VBA код в Sub:


Клетки (2, 2) .Value = "Щракна бутон за формуляр"

Бутон ActiveX е почти същият. Една от разликите е, че VBA поставя този код в работния лист, а не в отделен модул. Ето пълния код на събитието.

Частен Sub CommandButton1_Click () Клетки (4, 2) .Value = "ActiveX бутон кликна" Край Sub.

В допълнение към поставянето на тези контроли директно върху работния лист, можете да добавите и UserForm към проекта и вместо това поставете контроли. UserForms - почти същото като Windows формулярите - имат много предимства в това да могат да управляват контролите си по-скоро като обикновено Visual Basic приложение. Добавете UserForm към проекта в редактора на Visual Basic. Използвайте менюто View или щракнете с десния бутон на мишката в Project Explorer.


Щракнете тук, за да покажете илюстрацията

По подразбиране за UserForm е да не покажете формата. За да го направите видим (и да направите контролите върху него достъпни за потребителя), изпълнете метода Show на формата. Добавих още един бутон за формуляр само за това.

Под бутон2_Click () UserForm1.Show. Край Sub.

Ще забележите, че UserForm е модален по подразбиране. Това означава, че когато формата е активна, всичко останало в приложението е неактивно. (Щракването върху другите бутони не прави нищо, например.) Можете да промените това, като промените свойството ShowModal на UserForm на False. Но това ни задълбочава в програмирането. Следващите статии от тази поредица ще обяснят повече за това.

Кодът за UserForm се поставя в обекта UserForm. Ако изберете View Code за всички обекти в Project Explorer, ще видите, че има три отделни подпрограми за събитие Click, които се съдържат в три различни обекта. Но всички те са на разположение в една и съща работна книга.


Щракнете тук, за да покажете илюстрацията

Освен че форсира събитие чрез натискане на бутон, VBA се използва и за реакция на събития в обектите в хостинг приложението. Например, можете да откриете кога електронната таблица се променя в Excel. Или можете да откриете, когато ред е добавен към база данни в Access и да напишете програма, която да се справи с това събитие.

В допълнение към познатите командни бутони, текстови полета и други компоненти, които виждате в програмите през цялото време, можете да добавите компоненти, които всъщност са част от електронната ви таблица на Excel в вашия документ Word. Или направете обратното. Това надхвърля „копиране и поставяне“. Например, можете да покажете таблица на Excel в документ на Word.

VBA ви позволява да използвате цялата мощ на едно приложение на Office в друго. Например, Word има вградена сравнително проста способност за изчисление. Но Excel - добре - "превъзхожда" при изчисляване. Да предположим, че сте искали да използвате естествения регистър на функцията Gamma (сравнително сложно изчисление по математика) във вашия Word документ? С VBA можете да предадете стойности на тази функция в Excel и да получите отговора във вашия Word документ.

И можете да използвате много повече от приложенията на Office! Ако щракнете върху иконата "Още контроли", можете да видите значителен списък от неща, които са инсталирани на вашия компютър. Не всички от тях работят „извън кутията“ и трябва да разполагате с документацията за всеки от тях, но това ви дава представа колко широка е поддръжката за VBA.

От всички функции на VBA има една, която очевидно е по-полезна от която и да е друга. Разберете какво е на следващата страница.

Запазих най-доброто за последно! Ето една техника, която се прилага навсякъде във всички приложения на Office. Ще откриете, че го използвате много, така че ние го обхващаме тук във Въведение.

Когато започнете да кодирате по-сложни VBA програми, един от първите проблеми, с които ще се сблъскате, е как да разберете за методите и свойствата на обектите в Office. Ако пишете програма на VB.NET, често ще търсите кодови образци и примери за решаване на този проблем. Но когато вземете предвид всички различни хостинг приложения и факта, че всяко от тях има стотици нови обекти, обикновено не можете да намерите нещо, което точно съответства на това, което трябва да направите.

Отговорът е "Запишете макрос ..."

Основната идея е да включите "Запис на макрос", да преминете през стъпките на процес, подобен на този, който искате да изпълни вашата програма, и след това да проверите получената VBA програма за код и идеи.

Много хора правят грешката, мислейки, че трябва да можете да запишете точно програмата, от която се нуждаете. Но изобщо не е необходимо да бъдем точни. Обикновено е достатъчно да запишете VBA програма, която е точно "близка" до това, което искате, и след това добавете модификациите на кода, за да го направите точно. Толкова е лесно и полезно, че понякога ще записвам дузина програми с леки разлики, само за да видя какви са разликите в кода в резултата. Не забравяйте да изтриете всички експерименти, когато приключите да ги гледате!

Като пример щракнах върху Record Macro в Word Visual Basic Editor и написах няколко реда текст. Ето резултата. (Добавени са продължения на реда, за да ги съкращават.)

Sub Macro1 () ' „Макро1 Макрос. ' ' Избор. TextText Text: = _. „Това са времената, които“ Избор. TextText Text: = _. "опитайте мъжки души. The " Избор. TextText Text: = _. "летен войник" Избор. TextText Text: = _. "и патриотът на слънцето" Избор. TextText Text: = _. „в тези времена ще се свие от“ Избор. TextText Text: = _. "услугата на страната им." Избор. MoveUp Unit: = wdLine, Брой: = 1. Избор. HomeKey Unit: = wdLine. Избор. MoveRight Unit: = wdCharacter, _. Брой: = 5, Удължи: = wdExtend. Избор. Font. Bold = wdToggle. Край Sub.

Никой не изучава VBA само за себе си. Винаги го използвате заедно с конкретно приложение на Office. Така че, за да продължите да научавате, тук има статии, които демонстрират VBA, използван както в Word, така и в Excel:

-> Първи стъпки с помощта на VBA: Word Working Partner

-> Първи стъпки при използване на VBA: Работният партньор на Excel

instagram story viewer