Instrucțiuni

La crearea unei macrocomenzi în VBA, se scriu instrucțiuni, care sunt similare cu propozițiile din discursul obișnuit. O instrucțiune este o linie de cod care descrie o acțiune, definește un element sau dă valoarea unei variabile. VBA are, de obicei, o declarație pe fiecare rând de cod, deși se poate pune mai mult de o declarație pe o linie, separându-le cu două puncte. (De obicei, aceasta nu este o idee bună, deoarece face ca codul să fie mai greu de citit. Majoritatea programatorilor rămân la o declarație pe linie.)

De asemenea, o linie lungă de cod poate fi continuată pe o a doua linie sau pe o linie ulterioară, pentru a facilita citirea (deși de obicei acest lucru nu este necesar). O instrucțiune poate fi continuată pe următoarea linie utilizând un caracter de continuare a liniei: caracteru underscore (_) precedat de un spațiu (și urmat de tasta Enter). Codul poate fi continuat pe o altă linie doar pentru confort vizual pe monitor. VBA citește codul ca și cum ar fi scris pe o singură linie. Cu alte cuvinte, indiferent de numărul de linii folosite pentru formatarea ușor de citit, în timpul execuției este doar o singură instrucțiune către VBA. Iată un exemplu. De reținut caracterul underscore care îi indică VBA să citească această linie drept o singură linie continuă de cod, deși este împărțită în două linii vizuale:

Selection.InsertSymbol Font:="Wingdings", CharacterNumber:=-3880, Unicode _

     :=True

Deci, codul VBA poate fi considerat ca o serie de instrucțiuni, fiecare pe câte o linie (sau mai multe), care sunt executate pe rând, începând cu partea de sus a codului. Ca o rețetă dintr-o carte de bucate.

Șirurile de caractere nu pot fi trecute pe următoarea linie folosind caracterele de continuare

Un șir de caractere (text încadrat în ghilimele) nu poate fi trecut pe linia următoare folosind caracterul de continuare a liniei. Dacă trebuie despărțită o linie care conține un șir lung în citate, șirul poate fi despărțit în șiruri mai scurte care sunt concatenate folosind operatorul &: "început_șir" & "continuare_șir".

Declarațiile VBA variază foarte mult în funcție de lungime și complexitate. O declarație poate varia în lungime de la un singur cuvânt (cum ar fi Beep, care face bipul computerului sau Stop, care oprește executarea codului VBA) la linii foarte lungi și complicate care implică multe componente. Pentru a facilita citirea codului, se recomandă ca liniile de cod să fie cât mai scurte posibil.

Să examinăm câteva exemple VBA din Word. Cele mai multe dintre acestea vor folosi obiectul ActiveDocument, care reprezintă documentul activ (cel care este vizibil) în sesiunea curentă a Word. Cu toate acestea, câteva instrucțiuni utilizează colecția Documents, care reprezintă toate documentele deschise (inclusiv documentul activ). Un exemplu utilizează obiectul Selection, care reprezintă selecția curentă dintr-un document (textul selectat sau locația cursorului de inserare care clipește). Chiar dacă unele dintre aceste afirmații nu sunt imediat de înțeles, ele vor fi înțelese destul de repede.

Iată câteva exemple de instrucțiuni test:

Documents.Open "c:\temp\Document test.docm"
MsgBox ActiveDocument.Name
ActiveDocument.Words(1).Text = "Industrie"
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges Documents.Add
Selection.TypeText "Textul se poate formata folosind controale sau taste rapide."
Documents.Close SaveChanges:=wdDoNotSaveChanges Application.Quit

Să analizăm fiecare din aceste instrucțiuni pe rând. Instrucțiunea

Documents.Open "c:\temp\Document test.docm"

folosește metoda Open a colecției Documents pentru a deschide documentul specificat - în acest caz, Document test.docm. De încercat: se tastează această instrucțiune în fereastra Immediate, înlocuind calea și numele fișierului c:\temp\Document test.docm cu cele ale unui document care există în computer.

Se apasă tasta Enter, iar VBA deschide documentul țintă în fereastra Word. La fel ca atunci când se deschide un document manual în timp ce se lucrează interactiv în Word, această instrucțiune din macrocomandă face ca documentul nou deschis să devină documentul activ (documentul cu fereastra activă, adică fereastra afișată pe ecran, care preia comenzile de la tastatură sau maus).

Instrucțiunea

MsgBox ActiveDocument.Name

folosește funcția MsgBox (conținută în VBA) pentru a afișa utilizatorului proprietatea Name a obiectului ActiveDocument (în acest exemplu, Document test.docm). Ca experiment, în fereastra Immediate se tastează instrucțiunea MsgBox (tastați cu litere mici și utilizați funcțiile de Ajutor VBA pentru a alege) și apăsați tasta Enter. VBA afișează o casetă de mesaj peste fereastra Word. Cu clic pe butonul OK se închide caseta de mesaj.

Fereastra Immediate este foarte utilă când se testează instrucțiuni, pentru a vedea efectele lor. Nu trebuie executată întreaga macrocomandă. În fereastra Immediate se poate încerca doar o singură instrucțiune (o singură linie de cod).

Declarația

ActiveDocument.Words(1).Text = "Industrie"

folosește operatorul assignment (de atribuire) (semnul egal [=]) pentru a atribui valoarea Industrie la proprietatea Text a primului element din colecția Words a obiectului ActiveDocument. La introducerea acestei instrucțiuni în fereastra Immediate și apăsarea tastei Enter, apare cuvântul Industrie afișat la începutul documentului deschis.

După executarea acestei linii, cursorul este mutat la începutul cuvântului introdus, pentru că VBA manipulează direct proprietățile documentului (în acest caz, colecția Words) în loc să imite "tastarea" în document.

Instrucțiunea

ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges Documents.Add

folosește metoda Close pentru a închide obiectul ActiveDocument. Folosește un argument, SaveChanges, care controlează dacă Word salvează documentul care va fi închis (dacă acel document conține modificări nesalvate). În acest caz, instrucțiunea folosește constanta wdDoNotSaveChanges pentru a specifica că Word nu trebuie să salveze modificările la închiderea documentului. La introducerea instrucțiunii în fereastra Immediate și apăsarea tastei Enter, se poate vedea cum VBA face ca Word să închidă documentul.

Un argument este informația trimisă la o procedură. De exemplu, în următoarea instrucțiune, argumentul este șirul mesaj de tip text, care este trimis la funcția MsgBox din VBA:

MsgBox ("mesaj")

O funcție MsgBox va afișa orice text, trimis ca argument.

Prin introducerea în fereastra Immediate a instrucțiunii:

Documents.Add

instrucțiunea folosește metoda Add a colecției Documents pentru a adăuga un nou obiect Document la colecția Documents. Adică creează un document nou. Deoarece instrucțiunea nu specifică care șablon va fi folosit, noul document va fi bazat pe șablonul implicit (Normal.dotm). La introducerea acestei instrucțiuni în fereastra Immediate și apăsarea tastei Enter, Word va creea un document nou. Ca de obicei, noul document devine document activ.

Instrucțiunea

Selection.TypeText "Textul se poate formata folosind controale sau taste rapide."

folosește metoda TypeText a obiectului Selection pentru a scrie în documentul activ la poziția cursorului din selecția curentă. (Obiectul Selection reprezintă selecția curentă, care poate fi fie o selecție "închisă" – cursorul nu are nimic selectat,ca în acest exemplu – fie unul sau mai multe obiecte selectate, de exemplu unul sau mai multe cuvinte.)

În cazul în care textul este selectat în documentul activ, acea selecție este suprascrisă - cu excepția cazului în care s-a debifat caseta de selecție Typing Replaces Selected Text apăsând Alt + F, apoi Options, în fereastra Word Options - clic pe Advanced în panoul din stânga. În acest caz, selecția este restrânsă la începutul acesteia și textul nou este inserat înainte de textul selectat anterior.

În acest exemplu, pentru că a fost creat un document nou, nu este selectat nimic. La introducerea instrucțiunii Selection.TypeText în fereastra Immediate și apăsarea tastei Enter, Word adaugă textul în document. De data aceasta, punctul de inserție este plasat după textul inserat; metoda TypeText a obiectului Selection este similară cu tastarea în Word.

Instrucțiunea

Documents.Close SaveChanges:=wdDoNotSaveChanges

este similară cu instrucțiunea

ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges 

cu excepția faptului că lucrează cu colecția Documents în locul obiectului ActiveDocument. Colecția Documents reprezintă toate documentele deschise din sesiunea curentă Word. Această instrucțiune închide toate documentele deschise și nu salvează modificările nesalvate. Când se introduce această instrucțiune în fereastra Immediate și se tastează Enter, Word închide toate documentele deschise.

Instrucțiunea

Application.Quit

folosește metoda Quit a obiectului Application pentru a închide aplicația Word. Instrucțiunea se introduce în fereastra Immediate și se apasă tasta Enter. Word se închide și închide și Visual Basic Editor deoarece Word este gazdă pentru Visual Basic Editor.

Obținerea de ajutor în Visual Basic for Applications

Visual Basic Editor oferă ajutor pentru limbajul de programare Visual Basic for Applications. Pentru a-l vedea, se alege Help > Microsoft Visual Basic For Applications Help din Visual Basic Editor. Este accesat un site dedicat aplicației curente.

Apăsarea tastei F1 funcționează în două moduri.

Dacă cursorul clipește într-un spațiu gol sau într-o linie goală în fereastra Code, F1 afișează o pagină generală de asistență pentru Office. Această pagină conține linkul "Welcome to the Visual Basic for Applications language reference for Office." Faceți clic pe acel link și aruncați o privire.

A doua modalitate de a apăsa F1 pentru ajutor - adesea, cel mai rapid mod de a obține ajutor este cu clic pe un cuvânt cheie din codul scris, de exemplu ActiveWindow sau MsgBox. Apoi se apasă tasta F1, iar editorul încearcă să găsească ajutor online pentru respectiva comandă.

Cele mai multe dintre instrucțiunile și funcțiile VBA încorporate sunt ilustrate cu exemple de cod, care pot fi deosebit de utile atunci când este creat și depanat propriul cod. Eșantioanele arată cum se face acest lucru.

Fișierele Visual Basic Help folosesc câteva convenții despre care ar trebui cunoscute înainte de a le folosi:

  • Cuvintele înclinate (Italic) indică variabilele sau valorile care trebuie schimbate. De exemplu, unde se înlocuiește această cale de fișier scrisă înclinat cu o cale către un document de pe hard disk:
Documents.Open "c:\temp\Sample Document.docm"
  • Parantezele pătrate - [fonttype] - denotă argumente opționale.

Dacă nu se găsește ce este nevoie, se caută în paginile Web de ajutor din Microsoft Visual Basic, cu Help > MSDN On The Web. Acesta este un site de ajutor generic, cu link-uri către mostre de cod care pot fi căutate și multe alte elemente utile.