Visual Basic Editor are câteva instrumente pentru găsirea obiectelor necesare:
Următoarele secțiuni descriu cum pot fi folosite aceste instrumente pentru a găsi diferite obiecte.
Folosirea Macro Recorder pentru a adăuga cod pentru obiectele de care este nevoie
Dacă se folosește o aplicație Microsoft, este posibil ca cel mai simplu mod de a găsi obiectele de care este nevoie este prin pornirea Macro Recorder pentru a înregistra o macrocomandă rapidă, folosind obiectele care interesează. În timpul efectuării diferitelor acțiuni în aplicație, Macro Recorder creează un cod care poate fi deschis în Editorul Visual Basic, examinat și modificat, dacă este necesar.
În ciuda avantajelor sale, Macro Recorder are două dezavantaje::
ActiveWindow.View.ShowFormatChanges = False
Un exemplu al celei de-a doua probleme a fost prezentat pe pagina Crearea unei proceduri pentru Word. Iată un alt exemplu. De data aceasta, se va înregistra o macrocomandă pentru a crea o intrare pentru AutoCorrect. Presupunem că un cuvânt trebuie tastat de zeci de ori în fiecare zi. Pentru a simplifica munca, se pot tasta doar câteva litere din acel cuvânt (sau o abreviere la alegere). Apoi Word va înlocui în mod automat abrevierea cu acel cuvânt în timpul tastării. Iată cum se creează această macrocomandă:
Apoi se apasă combinația de taste Alt+F8 pentru a afișa caseta de dialog Macros, se selectează elementul Adaugare_Element_la_AutoCorrect, apoi clic pe butonul Edit pentru a deschide macrocomanda în Visual Basic Editor. Codul ar trebui să arate astfel:
Sub Adaugare_Element_la_AutoCorrect()
'
' Macrocomanda Adaugare_Element_pentru_AutoCorrect
' Modifica ref cu referinte
'
AutoCorrect.Entries.Add Name:="ref ", Value:="referinte"
With Options
.AutoFormatAsYouTypeApplyHeadings = False
.AutoFormatAsYouTypeApplyBorders = True
.AutoFormatAsYouTypeApplyBulletedLists = True
.AutoFormatAsYouTypeApplyNumberedLists = True
.AutoFormatAsYouTypeApplyTables = True
.AutoFormatAsYouTypeReplaceQuotes = True
.AutoFormatAsYouTypeReplaceSymbols = True
.AutoFormatAsYouTypeReplaceOrdinals = True
.AutoFormatAsYouTypeReplaceFractions = True
.AutoFormatAsYouTypeReplacePlainTextEmphasis = False
.AutoFormatAsYouTypeReplaceHyperlinks = True
.AutoFormatAsYouTypeFormatListItemBeginning = True
.AutoFormatAsYouTypeDefineStyles = False
.TabIndentKey = True
End With
With AutoCorrect
.CorrectInitialCaps = True
.CorrectSentenceCaps = True .CorrectDays = True
.CorrectCapsLock = True
.ReplaceText = True
.ReplaceTextFromSpellingChecker = True
.CorrectKeyboardSetting = False
.DisplayAutoCorrectOptions = True
.CorrectTableCells = True
End With
With OMathAutoCorrect
.UseOutsideOMath = False
.ReplaceText = True End With With Options
.AutoFormatApplyHeadings = True
.AutoFormatApplyLists = True
.AutoFormatApplyBulletedLists = True
.AutoFormatApplyOtherParas = True
.AutoFormatReplaceQuotes = True
.AutoFormatReplaceSymbols = True
.AutoFormatReplaceOrdinals = True
.AutoFormatReplaceFractions = True
.AutoFormatReplacePlainTextEmphasis = True
.AutoFormatReplaceHyperlinks = True
.AutoFormatPreserveStyles = True
.AutoFormatPlainTextWordMail = True
End With
Options.LabelSmartTags = False
End Sub
Aici, programul de înregistrare a adăugat foarte multe linii de cod care nu sunt necesare. Singura instrucțiune necesară este:
AutoCorrect.Entries.Add Name:="ref ", Value:="referinte"
Această linie indică cum se adaugă un element AutoCorrect, atunci când se lucrează cu obiectul de colecție Entries din obiectul AutoCorrect. Se folosește metoda Add din colecția Entries pentru a adăuga un element AutoCorrect în listă.
Toate celelalte linii de cod care specifică starea diferitelor opțiuni nu sunt necesare, pentru că ele nu se modifică în această macrocomandă.
Prin eliminarea acestor linii, macrocomanda poate fi redusă la o singură linie (se pot șterge și liniile de comentarii):
Sub Adaugare_Element_la_AutoCorrect()
'
' Macrocomanda Adaugare_Element_pentru_AutoCorrect
' Modifica ref cu referinte
AutoCorrect.Entries.Add Name:="ref ",Value:="referinte"
End Sub
A fost folosit Recorder pentru a obține sintaxa corectă de adăugare a unui element la lista AutoCorrect. Nu are rost să se păstreze liniile de cod care nu au legătură cu scopul macrocomenzii.
Mai mult, codul în plus poate îngreuna citirea și înțelegerea scopului macrocomenzii.
În plus, aceste linii suplimentare ar putea seta proprietăți care nu sunt de dorit. De exemplu, dacă macrocomanda este executată în viitor într-un document care are simboluri de numerotare. Cu clic pe fila File de pe Ribbon s-a ales File > Options > Proofing > AutoCorrect Options > AutoFormat As You Type și numerotarea a fost dezactivată. Cu toate acestea, când se execută macrocomanda, numerotarea apare din nou datorită acestei linii care nu este necesară în cod:
.AutoFormatAsYouTypeApplyBulletedLists = True
În ciuda limitărilor sale, Macro Recorder oferă acces rapid la obiectele cu care se lucrează, iar codul rezultat poate fi modificat oricând în Editorul Visual Basic. În plus, codul generat de Recorder este executat garantat fără bug-uri.
Folosirea Object Browser
Pentru mulți programatori, instrumentul principal de scriere a codului pentru obiecte este Object Browser, care a fost folosit pe pagina Crearea unei macrocomenzi pentru Excel. În secțiunile următoare se descrie mai detaliat Object Browser și modul de folosire pentru a găsi informațiile necesare. Pentru a afișa Object Browser, se apasă tasta F2 în Editor.
Componente ale Object Browser
Object Browser pune la dispoziție următoarele informații despre obiectele încorporate, dar și despre obiectele create ulterior:
Imaginea de mai jos afișează componentele din Object Browser.
Iată diferite ce fac elemente din Object Browser:
Pentru a face căutările din Object Browser mai puțin specifice, puteți utiliza metacaractere, cum ar fi ? (pentru a reprezenta un singur caracter) și * (pentru a reprezenta un grup de caractere). De asemenea, se poate căuta numai un anumit cuvânt (în loc să se potrivească șirul de căutare cu o parte a altui cuvânt) făcând clic pe butonul din dreapta în orice locație din Browserul de obiecte (cu excepția listei derulante Project/Library sau în caseta Căutare text) și alegând Find Whole Word Only din meniul contextual. Selecția Find Whole Word Only are în stânga un marcaj de selectare în meniul contextual când este activ; pentru a-l dezactiva, se alege din nou Find Whole Word Only din meniul contextual.
Cele trei bare despărțitoare pot fi glisate pentru a redimensiona ferestrele din Object Browser. (De asemenea, fereastra Object Browser poate fi redimensionată sau maximizată.)
În imaginea următoare sunt toate pictogramele și descrierea a ce reprezintă acestea.
Un punct albastru în partea stângă sus a pictogramei Property sau Method indică că acea proprietate sau metodă este cea implicită.
Adăugarea și ștergerea de obiecte din bibliotecă
Bibliotecile implicite de obiecte sunt suficiente pentru macrocomenzile obișnuite, deci, în general, nu trebuie adăugate biblioteci specializate. Pentru programarea avansată, trebuie adăugate și alte biblioteci (de exemplu, pentru modificarea Ribbon trebuie adăugată o bibliotecă specială). Bibliotecile de obiecte pot fi adăugate și eliminate, alegând Tools > References din Editor și utilizând caseta de dialog References pentru a face selecțiile:
Astfel, codul va rula mai repede, deși, așa cum am menționat anterior, computerele de astăzi sunt atât de rapide încât găsirea unor modalități de creștere a vitezei de execuție a macrocomenzilor nu mai este o problemă.
La deschiderea Editorului Visual Basic, acesta încarcă automat bibliotecile de obiecte necesare pentru utilizarea VBA și formularele de utilizatori cu aplicația gazdă. Acest set de biblioteci de obiecte nu trebuie modificat, decât în cazul în care se accesează obiecte conținute în alte biblioteci. De exemplu, pentru realizarea unei proceduri în Word care trebuie să utilizeze o caracteristică găsită în Excel, va trebui să se adauge în editorul VBA al Word o referință la o bibliotecă de obiecte Excel pentru a face ca obiectele din Excel să fie disponibile.
Se poate ajusta prioritatea (sau order of precedence) pentru diferite referințe, ajustând ordinea în care apar referințele în caseta de dialog Referințe. Prioritatea referințelor contează atunci când în cod se folosește un obiect enumerat în mai multe referințe: VBA verifică lista referințelor pentru a determina ordinea referințelor care conțin numele respectivului obiect și îl utilizează pe primul, cu excepția cazului în care este specificat altfel, prin utilizarea unui nume lipsit de ambiguitate.
Pentru a adăuga sau elimina biblioteci de obiecte, se urmează acești pași:
1. În Visual Basic Editor, se alege Tools > References pentru a afișa fereastra de dialog References. Fereastra de dialog References se poate afișa și cu clic dreapta în Object Browser și din meniul contextual alegerea opțiunii References.
2. În lista Available References, se pot bifa elementele pentru biblioteci de obiecte pentru a le adăuga sau debifa pentru a elimina referințele de care nu este nevoie. În listă ar trebui să fie câte o referință pentru fiecare bibliotecă de obiecte a fiecărei aplicații care suportă automatizare și este instalată în computer. Automatizare, în acest context, înseamnă că o aplicație permite automatizarea unor operațiuni (altfel zis, macrocomenzi). O aplicație care suportă automatizare își expune propriile obiecte, adică aplicația pune propriile obiecte la dispoziția programatorilor.
3. Referințele care se folosesc sunt afișate în partea de sus a listei Available References și nu sunt în ordine alfabetică (ci în ordinea precedenței, descrisă anterior în acest capitol).
4. Ordinea precedenței se poate ajusta pentru referințele folosite prin selectarea unei referințe și folosind butoanele cu săgeți Priority pentru a muta referința mai sus sau mai jos în listă. De obicei, Visual Basic for Applications și Object Library se păstrează în partea de sus a listei.
Adăugarea unei biblioteci de referință
În lista cu referințe se poate adăuga o referință nouă cu clic pe butonul Browse pentru a afișa fereastra de dialog Add Reference, selectând fișierul bibliotecă, apoi clic pe butonul Open.
5. Clic OK pentru a închide fereastra de dialog References și a reveni la Object Browser.
Navigarea folosind Object Browser
Pentru a vedea obiectele valabile pentru un obiect, se urmează etapele:
1. Mai întâi se activează modulul cu cod cu dublu-clic în Project Explorer.
2. Se afișează Object Browser cu View > Object Browser, sau apăsând tasta F2, sau cu clic pe butonul Object Browser din bara cu instrumente Standard. (Dacă Object Browser este afișat deja, se face activ cu clic pe el sau selectându-l din lista meniului Window.)
3. În lista Project/Library, se selectează numele proiectului sau al bibliotecii care trebuie afișată. Object Browser afișează clasele valabile în lista Classes.
4. În lista Classes, se selectează clasa cu care se va lucra. De exemplu, când se alege un proiect la etapa 3, se selectează modulul cu care se lucrează din lista Classes.
5. Pentru a lucra cu un anumit membru al clasei sau proiectului, acesta poate fi selectat din lista Members Of. De exemplu, când se lucrează cu un proiect șablon, se poate alege o anumită procedură sau un anumit utilizator cu care se va lucra.
După selectarea clasei, membrului sau proiectului, se poate:
O Definiție este codul conținut
Definiția unei proceduri este codul pe care îl conține. Definiția unui modul este codul din toate procedurile pe care le conține. Definiția unui formular de utilizator - user form este codul din toate procedurile atașate la formular. Pentru a vedea cum funcționează butonul View Definition, se tastează numele unei macrocomenzi în câmpul de căutare din Object Browser (aflat la stânga pictogramei). Apoi clic pe pictogramă pentru a localiza macrocomanda. Apoi clic pe butonul View Definition, pentru a deschide fereastra Code și a afișa codul din macrocomandă.
Folosirea ajutorului (Help) pentru a găsi Obiectul de care este nevoie
Sistemul de ajutor online din VBA oferă o modalitate simplă de a accesa detalii despre obiectele folosite. Fișierul Help oferă referințe la toate obiectele, metodele și proprietățile din VBA, inclusiv desene pentru a arăta cum sunt legate obiectele între ele și exemple de cod pentru a arăta sintaxa corectă.
Cea mai rapidă metodă de a accesa VBA Help este prin apăsarea tastei F1 atunci când se lucrează în Visual Basic Editor.
Apăsarea tastei F1 pentru a accesa o pagină de ajutor în VBA
F1 funcționează în două moduri.
Unele legături sunt afișate pe partea stângă (sus și jos) a paginii web. De aici se pot accesa alte pagini web, de exemplu Office și SharePoint Add-ins și MSDN Forums. Cu clic pe Stack Overflow se accesează pagina Q & A care conține și exemple de cod.
Se poate încerca și Welcome to the Visual Basic for Applications language reference for Office 2013 din mijlocul paginii.
Apăsarea tastei F1 pentru a accesa direct pagina de ajutor a unei comenzi
Al doilea mod de folosire a tastei F1 deschide direct pagina de ajutor pentru cuvântul corespunzător. De exemplu, pentru a vedea comenzile pentru fereastra activă, se poate tasta activewindow în fereastra Code, după care se poziționează cursorul în acel cuvânt și se apasă tasta F1.
În afară de informațiile obișnuite de ajutor care se află pe paginile de ajutor online, mai sunt câteva modalități suplimentare de a găsi ajutor:
Folosirea caracteristicii Auto List Members
Funcția Auto List Members a fost descrisă deja.
Pentru recapitulare, în codul VBA - ca și în majoritatea celorlalte limbaje de programare - obiectele și membrii acestora (proprietăți și metode) sunt separate prin puncte. Această punctuație ajută să se vadă relațiile dintre obiectele părinte, obiectele copil și, la sfârșitul liniei, membri. În codul următor sunt două puncte:
sngLinesPerPage = ActiveDocument.PageSetup.LinesPage
Când se introduce o declarație în Editorul Visual Basic și se tastează punctul, caracteristica Auto List Members afișează o listă de proprietăți și metode corespunzătoare obiectului.
(Dacă nu este activată, caracteristica se activează în Editorul Visual Basic, selectând Tools > Options, apoi bifând caseta Auto List Members.)
Din punct de vedere tehnic, există o deosebire între Auto List Members și caracteristica similară List Properties/Methods. Prima caracteristică este declanșată prin tastarea unui punct (.) După care urmează numele unui obiect într-o linie de cod. A doua caracteristică este declanșată apăsând Ctl + J sau cu clic dreapta pe numele unui obiect într-o linie de cod și selectând List Properties/Methods din meniul care apare. Dintre cele două, mai utilă pare Auto List Members.
Funcția Auto List Members oferă o modalitate rapidă de a completa declarațiile, dar trebuie cunoscut obiectul cu care se lucrează înainte de a putea lucra cu membrii săi. Uneori, folosirea acestei funcții este un fel de a vă găsi drumul printr-un labirint și de a primi instrucțiuni detaliate care se termină cu expresia "Dar nu puteți ajunge de aici până dincoace".
După ce se cunoaște obiectul de pornire, se poate găsi cu ușurință proprietatea sau metoda de care este nevoie. De exemplu, pentru a pune împreună declarația Application.Documents (1) .Close (pentru a închide primul document din colecția Documents in Word), se poate lucra astfel:
1. Se poziționează cursorul pe o linie nouă într-o procedură goală (între comenzile Sub și End Sub). Dacă este nevoie, se creează o procedură nouă.
2. Se tastează cuvântul application, sau doar appl și se apasă Ctrl+spacebar pentru a afișa caracteristica Complete Word care va completa automat cuvântul.
3. Se tastează un punct (.) după cuvântul Application. Caracteristica Auto List Members afișează lista cu proprietăți și metode valabile pentru obiectul Application.
4. Se alege elementul Documents din lista Auto List Members. Alegerea se poate face prin derularea în jos cu mausul, apoi dublu clic pentru a adăuga cuvântul în fereastra Code, prin derulare folosind tastele săgeți și adăugarea cuvântului prin apăsarea tastei Tab, sau prin tastarea primelor litere din cuvânt (pentru a-l localiza rapid) și tastarea tastei Tab.
5. Se tastează (1). după Documents. După tastarea punctului, caracteristica Auto List Members va afișa lista cu proprietăți și metode valabile pentru obiectul Document. De reținut că fără (1), se lucrează cu o colecție de documente, dar când se adaugă (1), se lucrează cu un anumit document, care aici este primul din colecție.
6. Se alege metoda Close din lista Auto List Members prin derulare cu mausul sau cu tasta săgeată în jos. Pentru că acesta este finalul instrucțiunii, se apasă tasta Enter pentru a adăuga metoda și a trece la o linie nouă (în loc să se apese tasta Tab, care adaugă codul, dar rămâne pe aceeași linie de cod).
Selecția Automată permite mâinilor să rămână pe tastatură
Pentru majoritatea oamenilor, cea mai rapidă modalitate de a introduce declarații în fereastra Code este de a păstra mâinile pe tastatură. La urma urmei, programarea se tastează. Pentru a simplifica acest lucru, editorul Visual Basic selectează automat elementul curent din lista Auto List Members atunci când se introduce un punct sau o paranteză deschisă. În exemplul anterior, se poate tasta Application. pentru a afișa lista, apoi se tastează Do pentru a selecta elementul Documents și (pentru a intra în elementul Documents.