52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

26
1. Scurtă prezentare a produsului Microsoft Word 1.1 Gestiunea documentelor (Meniul File) 1.2 Manipularea textului (Meniul Edit) 1.3 Formatarea documentelor (meniul Format) 1.4 Lucrul cu tabele (meniul Table) 1.5 Desene (Drawing) 1.6 Inserarea de imagini şi obiecte 1.7 Interclasarea de documente (Mail Merge) 2. Visual Basic for Applications (VBA) în Word 2.1 VBA – vedere de ansamblu 2.2 Înregistrarea macro-urilor 2.3 Elemente ale interfeţei de programare 2.4 Principalele obiecte şi colecţii Word 2.5 Utilizarea formularelor proprii (User Forms) 2.6 Exemplu de aplicaţie VBA în Word CAPITOLUL 1

Transcript of 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Page 1: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

1. Scurtă prezentare a produsului Microsoft Word

1.1 Gestiunea documentelor (Meniul File) 1.2 Manipularea textului (Meniul Edit) 1.3 Formatarea documentelor (meniul Format) 1.4 Lucrul cu tabele (meniul Table) 1.5 Desene (Drawing) 1.6 Inserarea de imagini şi obiecte 1.7 Interclasarea de documente (Mail Merge)

2. Visual Basic for Applications (VBA) în Word

2.1 VBA – vedere de ansamblu 2.2 Înregistrarea macro-urilor 2.3 Elemente ale interfeţei de programare 2.4 Principalele obiecte şi colecţii Word 2.5 Utilizarea formularelor proprii (User Forms) 2.6 Exemplu de aplicaţie VBA în Word

CAPITOLUL 1

Page 2: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

1. Scurtă prezentare a produsului Microsoft Word

Microsoft Word este un program de procesare de text adaptabil şi uşor de folosit. Word oferă o multitudine de facilităţi pentru crearea documentelor în mod profesional, pentru comunicarea ideilor şi partajarea informaţiilor. Dintre aceste facilităţi amintim:

utilizarea puternicului set de instrumente de editare din Word pentru a elabora proiecte, lucrând individual sau in grup

lucrul mai rapid si mai eficient folosind facilităţile Word de automatizare

utilizarea vrăjitorilor din Word pentru configurarea automată a documentelor

construirea de tabele, referinţe încrucişate, anteturi şi note de subsol pentru a vă organiza documentele

1.1 Gestiunea documentelor (Meniul File)

Crearea unui document nou se realizează prin opţiunea New. În caseta de dialog se specifică tipul de document dorit. Se pot crea documente vide sau pe baza unor modele predefinite de Microsoft Word, cum ar fi: scrisori de afaceri, fax-uri, memorandum-uri, rapoarte, publicaţii de tip newsletter sau curriculum vitae.

Deschiderea unui document deja existent este posibilă prin opţiunea Open, iar în caseta de dialog se specifică numele, tipul şi adresa documentului care se deschide.

Salvarea unui document • Se poate salva documentul activ la un moment dat, indiferent dacă

este nou creat sau deja existent (opţiunea Save). • Se pot salva toate documentele deschise la un moment dat

(opţiunea Save All, când se tine apăsata tasta SHIFT). • Se poate face o copie a unui document activ (opţiunea Save As)

Limbajul Visual Basic for Applications [VBA] pentru Microsoft Word

Page 3: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

La salvarea unui document, se poate specifica tipul de fişier astfel încât acesta să poata fi utilizat şi de către alte programe.

Închiderea unui document activ se realizează cu ajutorul opţiunii Close, sau Close All – pentru închiderea tuturor documentelor active la un moment dat.

1.2 Manipularea textului (Meniul Edit)

Selectarea textului - există mai multe moduri de selectare a unui text cu mouse-ul – se apasă butonul stâng al mouse-ului şi se trage

mouse-ul până la sfârşitul selecţiei cu tastatura – se ţine apăsată tasta SHIFT şi se selectează textul

dorit cu ajutorul săgeţilor se utilizează opţiunea Edit->Select All pentru a selecta întreg

conţinutul unui document Copiere şi mutare – un text selectat poate fi eliminat din document

(opţiunea Edit-> Cut) sau copiat pentru a fi reutilizat (opţiunea Edit->Copy). Un text copiat sau eliminat prin comanda Cut poate fi inserat în alt loc în acelaşi document sau poate fi introdus într-un alt document Word cu ajutorul comenzii Edit->Paste.

Anularea unei comenzi se obţine prin opţiunea Edit->Undo. Se poate seta numărul de acţiuni care pot fi anulate. Pentru a reface o acţiune, se utilizează opţiunea Edit-> Repeat.

Pentru a regăsi un text în cadrul unui document se utilizează opţiunea Edit->Find. În caseta de dialog se va specifica textul căutat şi sensul de căutare în document. Un text astfel găsit poate fi înlocuit cu un text specificat de utilizator în caseta de dialog Edit ->Replace.

1.3 Formatarea documentelor (meniul Format) Formatarea textului (Font) Pentru a formata un text, acesta trebuie mai întâi selectat. Apoi, se

pot modifica pentru acea selecţie, tipul de caracter (sau fontul), stilul (normal, bold, italic, subliniat), dimensiunea, culoarea sau i se pot aplica diverse efecte speciale.

Comenzile utilizate în acest sens pot fi selectate din caseta de dialog Format->Font.

Page 4: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Formatarea paragrafelor (Paragraph) Din caseta de dialog Format->Paragraph se pot selecta diverse

opţiuni legate de formatul unui paragraf, cum ar fi: alinierea (la stânga, la dreapta sau centrat), distanţa faţă de marginea rândului (opţiunea Indentation), distanţa între rânduri (opţiunea Line Spacing).

Formatarea paginii Formatarea paginii se referă la definirea şi delimitarea unor elemente

cum ar fi antetele şi notele de subsol, marginile şi secţiunile, orientarea, numerotarea sau fundalul paginii, după cum se observă din Figura 1.1.

Figura 1.1

a) Antet şi notă de subsol Pentru ca anumite informaţii să apară la începutul fiecărei pagini,

cum ar fi de exemplu un titlu, se utilizează antetul. Nota de subsol se creează pentru informaţiile care se repetă în josul fiecărei pagini dintr-un document. Din meniul View, se selectează opţiunea Header and Footer şi se introduce textul dorit în secţiunea aferentă – antet sau notă de subsol.

b) Margini Marginea reprezintă distanţa dintre text şi marginea foii de hârtie.

Este imprimat de obicei textul din interiorul marginilor. Pentru a fixa marginile, se selectează opţiunea Margins din caseta de dialog File->Page Setup.

Page 5: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

c) Secţiuni Un document se poate împărţi în mai multe secţiuni astfel încât

fiecare secţiune să fie formatată diferit. Formatarea unei secţiuni presupune stabilirea numărului de coloane, dimensiunea marginilor, formatarea numărului de pagină şi a conţinutului şi poziţiei antetelor şi notelor de subsol. Crearea unei noi secţiuni se obţine prin poziţionarea cursorului în punctul de început al acesteia şi selectarea opţiunii Break din meniul Insert. Pentru ca textul să fie dispus pe mai multe coloane se utilizează opţiunea Columns din meniul Format, iar în caseta de dialog se specifică numărul şi dimensiunea coloanelor.

d) Delimitatori de pagină Microsoft Word introduce automat o pagină nouă când pagina

curenta este plină. Dacă se doreşte ca o pagină să înceapă într-un anume punct, se selectează opţiunea Page Break din meniul Insert->Break.

e) Aliniere verticală a textului Pentru a selecta un tip de aliniere a textului dintr-o pagină, se

selectează opţiunea Layout->Vertical Alignment din caseta de dialog File->Page Setup.

f) Numerotarea paginilor Se poate specifica locul şi formatul pentru numărul paginii într-un

document utilizând caseta de dialog Page Numbers din meniul Insert. Numărul paginii poate fi specificat şi din comanda View->Header and Footer.

g) Dimensiune şi orientare Tot din caseta de dialog File->Page Setup se selectează dimensiunea

dorită a paginii (de exemplu A4, A5, A6, etc – opţiunea Paper Size) şi orientarea acesteia, respectiv pe verticală (Portrait) sau pe orizontală (Landscape).

h) Fundal (Background) Se pot selecta diverse fundaluri pentru un document Word, de la un

fond colorat, până la imagini. Acest lucru se realizează prin selectarea opţiunii Background din meniul Format.

Chenare şi umbre Într-un document Word, unele paragrafe, cuvinte, litere pot fi incluse

în chenare. De asemenea, se pot alege chenare pentru o întreagă pagină.

Page 6: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Acest lucru se realizează utilizând opţiunile Borders sau Page Borders din meniul Format->Borders and Shading. În casetele de dialog aferente se alege tipul chenarului, culoarea sau grosimea liniei.

Prin selectarea opţiunii Shading din acelasi meniu se pot alege ‘umbre’, care să apară în fundalul unui paragraf selectat anterior sau chiar al unei pagini.

1.4 Lucrul cu tabele (meniul Table)

Informaţiile incluse într-un document pot fi reprezentate în diferite moduri, unul din acestea fiind tabelul, care oferă posibilitatea unei mai bune sintetizări şi structurări a datelor. Complexitatea tabelelor utilizabile variază de la simplu la complex, după cum se poate observa în Figura 1.2.:

Figura 1.2

Crearea unor tabele simple Un tabel este format din linii şi coloane la intersecţia cărora se

găsesc celule, în care se pot introduce diferite tipuri de date (numerice, text, imagini etc.).

Pentru a crea un tabel se selectează opţiunea Insert Table din meniul Table şi, în caseta de dialog, se specifică numărul de linii şi coloane dorit. Opţiunea AutoFormat oferă posibilitatea utilizării unuia dintre tipurile de tabele predefinite.

Page 7: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Există posibilitatea transformării unui text deja existent într-un tabel. În acest sens, se selectează mai întâi textul şi apoi opţiunea Convert Text to Table din meniul Table.

Dacă ulterior se doreşte inserarea de noi linii şi coloane într-un tabel, se procedează în felul următor: se selectează mai întâi linia deasupra căreia se va insera noua linie sau coloana în dreapta căreia se va introduce noua coloană, iar apoi se apeleazăn comenzile Insert Rows sau Insert Columns din meniul Table. În noile versiuni ale Microsoft Word există posibilitatea inserării de linii deasupra sau sub rândul curent (Insert->Rows Above sau Insert-> Rows Below) sau de coloane în stânga sau în dreapta coloanei curente (Insert->Columns to the Left sau Insert-> Columns to the Right).

Ştergerea celulelor dintr-un tabel se realizează prin intermediul opţiunii Delete Cells din meniul Table, dupa ce au fost mai întâi selectate celulele de şters. În caseta de dialog se poate specifica dacă se doreşte ştergerea unei întregi linii sau coloane sau doar a unor celule.

Crearea unor tabele complexe Cel mai simplu mod ce a crea tabele complexe sau neregulate se

realizează cu ajutorul comenzii Tables and Borders din bara de lucru Standard. În acest mod, oricine poate să deseneze tabelul dorit fără prea mare greutate.

Se poate utiliza însă şi opţiunea Draw Table din meniul Table, similară cu desenarea unui tabel cu creionul pe o foaie de hârtie. Mai întâi se desenează diagonala tabelului, pentru a-i defini mărimea, iar apoi liniile şi coloanele din interior.

Pentru a divide o celulă în mai multe celule se selectează celula şi se alege opţiunea Split Cells din meniul Table. Pentru a uni mai multe celule într-una singură se selectează celulele şi se alege opţiunea Merge Cells tot din meniul Table.

Chenare şi umbre Implicit, tabelele sunt încadrate într-un chenar negru de o anumită

grosime. Pentru a modifica sau şterge un chenar, se selectează butonul Tables and Borders din bara de lucru Standard şi apoi noul tip de chenar.

Sortarea si totalizarea datelor Datele dintr-un tabel pot fi sortate alfabetic, numeric sau cronologic.

Pentru a sorta un tabel, se selectează mai întâi celulele de sortat şi apoi opţiunea Sort din meniul Table. Din caseta de dialog se va alege ordinea de sortare – crescătoare sau descrescătoare.

Page 8: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

De asemenea, se pot efectua calcule cu datele dintr-un tabel. Pentru a aduna, de exemplu, o coloana ce conţine numere, se selectează celula din josul coloanei care se adună şi apoi butonul Auto Sum din bara de lucru Tables and Borders. Pentru a efectua alte calcule se utilizează comanda Formula din meniul Table.

Orientarea şi alinierea conţinutului unui tabel Cu ajutorul comenzii Text Direction din meniul Format, un anumit

text poate fi dispus pe orizontală sau pe verticală. Cu ajutorul instrumentelor de aliniere din barele de lucru

Formatting şi Tables and Borders, conţinutul celulelor unui tabel poate fi aliniat orizontal sau vertical.

1.5 Desene (Drawing) Un alt mod de reprezentare a informaţiilor dintr-un document este

cel grafic. Deşi este dedicat procesării textelor, Word oferă facilităţi de desen liber sau de utilizare a unor elemente predefinite. În Figura 1.3 este prezentat un document ce conţine diferite desene şi obiecte.

Figura 1.3

Utilizarea barei de lucru Drawing Din bara de lucru Drawing se pot alege instrumente pentru a desena,

manipula sau formata diverse desene.

Page 9: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Crearea de forme În Word există o serie de forme predefinite care pot fi selectate cu

ajutorul opţiunii AutoShapes, fie din meniul Insert->Picture, fie din bara de lucru Drawing. Aceste forme predefinite sunt grupate pe categorii: linii (Lines), forme de bază (Basic Shapes), săgeţi (Block Arrows), elemente pentru diagrame de flux (Flowchart Elements), steluţe şi insigne (Stars and Banners).

Pentru a desena oricare din aceste forme, este necesară selectarea ei din meniul AutoShapes. După desenare, o formă poate fi redimensionată. Toate formele de bază au puncte de mânuire (handles), cu ajutorul cărora li se poate modifica forma sau dimensiunea.

Adăugarea de text la desene I se poate adăuga un text oricărui obiect desenat, mai putin liniilor,

formelor libere sau conectorilor, prin simpla selectare a desenului şi apoi editarea textului respectiv. Există şi instrumentul Text Box în bara de lucru Drawing, cu ajutorul căruia se poate introduce un text încadrat într-un chenar oriunde în pagină.

Linii drepte, curbe şi alte forme Cu ajutorul butonului Line din bara de lucru Drawing se pot desena

linii drepte. Pentru linii curbe se apelează meniul AutoShapes. Tot cu ajutorul instrumentelor din bara de lucru Drawing, liniile sau formele deja desenate pot fi modificate, în sensul schimbării grosimii, culorii, tipului (punctat, de exemplu) sau transformării liniilor în săgeţi.

Manipularea obiectelor Manipularea unui obiect presupune selectarea în prealabil a acestuia,

cu ajutorul mouse-ului. Asupra obiectului se pot efectua apoi următoarele acţiuni:

• Copiere, tăiere sau lipire – cu ajutorul comenzilor Copy, Cut sau Paste din meniul Edit

• Redimensionare – fie cu ajutorul opţiunii Size din caseta de dialog Format-> AutoShape, fie cu ajutorul punctelor de mânuire (handles). Dacă se lucrează cu punctele de mânuire, desenul este adus la forma dorită cu ajutorul mouse-ului (drag and drop).

• Rotire – cu ajutorul comenzii Free Rotate din bara de lucru Drawing; punctele de mânuire se transformă astfel încât obiectul va putea fi rotit de utilizator în ce sens doreşte. Se poate utiliza şi meniul Draw din bara de lucru Drawing, unde se alege opţiunea Rotate or Flip.

Page 10: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Formatarea obiectelor Din caseta de dialog Format->AutoShapes se pot alege opţiuni

pentru: • Modificarea culorii de fond a obiectului - Colors and Lines->Fill • Modificarea conturului, ca stil de linie sau culoare – Colors and

Lines • Aliniere sau mod de dispunere în pagină – Layout Gruparea obiectelor Dacă se lucrează cu mai multe obiecte la un moment dat, pentru a le

manipula mai uşor acestea pot fi grupate. Acest lucru se realizează cu ajutorul comenzii Group din meniul Draw din bara de lucru Drawing. Pentru a le degrupa se utilizează comanda Ungroup, din acelaşi meniu.

1.6 Inserarea de imagini şi obiecte Pentru a insera o imagine se utilizează opţiunea Picture din meniul

Insert. Se pot introduce imagini din galeria Microsoft Word (Clipart), dintr-un fişier specificat de utilizator, imagini scanate, grafice sau texte dintr-o galeri predefinită (WordArt).

În galeria Clipart există o serie de imagini predefinite, grupate pe diverse categorii, cum ar fi: comunicaţii, birou, familie, muzică, plante, etc. Pentru a le utiliza se selectează comanda Insert Clip Art din bara de lucru Drawing sau din meniul Insert->Picture.

Inserarea unei imagini dintr-un alt fişier se realizează cu ajutorul opţiunii From File din meniul Insert->Picture, iar în caseta de dialog se localizează fişierul dorit.

Galeria WordArt conţine diverse tipuri de texte artistice pe care utilizatorul le poate folosi pentru a edita un text. Se selectează în acest sens opţiunea WordArt din bara de lucru Draw sau din meniul Insert->Picture. În caseta de dialog se alege tipul de text, apoi se editează şi se formatează textul dorit.

1.7 Interclasarea de documente (Mail Merge)

Interclasarea de documente, realizată cu ajutorul opţiunii Mail Merge, presupune existenţa a două documente: un fişier principal şi un fisier de date. Legătura dintre aceste două fişiere se realizează prin anumite câmpuri de date, numite “câmpuri de interclasare” (merge fields). Interclasarea se poate face pe baza a două documente deja existente sau prin

Page 11: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

crearea unor documente noi. Fişierul principal este un document obişnuit, care conţine o parte variabilă, specificată prin câmpurile de interclasare.În versiunile recente de Microsoft Word (începând cu anul 2000), câmpurile de date nu mai sunt salvate într-un document, ci sub forma unei tabele Microsoft Access, numită listă.

Etapele interclasării documentelor cu ajutorul Vrăjitorului 1. Se activează vrăjitorul corespunzător interclasării, cu ajutorul

opţiunii Tools-> Letters and Mailings->Mail Merge Wizard... Vrăjitorul este structurat în 6 paşi.

2. Primul pas îl reprezintă alegerea unui tip pentru documentul

principal. Tipurile disponibile sunt: a. Scrisori (Letters) b. Mesaje electronice (E-Mail messages) c. Plicuri (Envelopes) d. Etichete (Labels) e. Catalog de adrese (Directory).

Vom prezenta în continuare paşii pentru crearea unei scrisori

circulare. 3. După ce a fost selectat tipul de document (Letters) urmează

specificarea documentului de bază. Se poate: a. Porni de la documentul curent – opţiunea Use the current

document b. Utiliza un model predefinit de document – opţiunea Start from

template c. Utiliza un document existent – opţiunea Start from existing

document.

4. La pasul al treilea din vrăjitor se va specifica lista unde sunt salvate câmpurile de date. Din nou există 3 opţiuni: a. Utilizarea unei liste disponibile, prin specificarea fisierului

Microsoft Access corespunzător – Use an existing list b. Selectarea persoanelor de contact dintre adresele salvate în

Microsoft Outlook – Select from Outlook contacts c. Editarea unei noi liste de persoane de contact – Type a new list.

Selectarea acestei opţiuni are ca efect deschiderea unei ferestre de dialog, prezentată în figura 1.4.

Page 12: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Figura 1.4

Există un set de câmpuri predefinite care vor putea fi completate pentru fiecare destinatar al scrisorii circulare. Modificarea acestora, în sensul adăugării, ştergerii sau redenumirii lor este posibilă cu ajutorul opţiunii Customize....Pentru adăugarea unei noi persoane de contact se utilizează butonul New Entry, iar pentru ştergerea persoanei de contact selectate butonul Delete Entry. Navigarea între înregistrările dintr-o listă se poate realiza cu ajutorul butoanelor First, Previous, Next, Last, active pentru o listele cu cel puţin două înregistrări, unde o înregistrare reprezintă toate informaţiile existente despre o anumită persoană de contact.

Prin închiderea ferestrei de dialog, cu ajutorul butonului Cancel, are loc şi salvarea informaţiilor înregistrate. Vizualizarea lor ulterioară este posibilă prin opţiunea Edit recipients list, iar fereastra de dialog aferentă este prezentată în figura 1.5:

Figura 1.5

Page 13: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Înregistrările din listă pot fi sortate după diferite câmpuri dacă se efectuează click pe denumirea câmpului respectiv. Modificarea unei înregistrări se face prin activarea butonului Edit....

De asemenea, pot fi selectate doar anumite înregistrări din listă pentru utilizare în scrisoarea circulară. Acest lucru se poate realiza în două moduri:

• prin bifarea căsuţei din stânga corespunzătoare înregistrărilor dorite

• prin activarea submeniului unui anumit câmp (săgeata din stânga denumirii câmpului) şi selectarea uneia din opţiunile: (All) – toate înregistrările Oricare din câmpurile din listă, prin denumirea sa (Blanks) – doar înregistrările pentru care acest câmp este vid (Nonblanks) – doar înregistrările pentru care acest câmp nu

este vid (Advanced) – specificarea uror criterii de selecţie pentru

câmpuri.

5. După definitivarea editării sursei de date, pasul următor presupune editarea documentului principal, respectiv scrierea efectivă a scrisorii şi inserarea câmpurilor dorite. Word permite introducerea unor blocuri predefinite de câmpuri, pentru adresă (Address block...), formule de încheiere (Greeting line...), ş.a. sau lasă utilizatorul să-şi formateze scrisoarea după plac (opţiunea More items...). După inserare, în documentul principal denumirile câmpurilor vor apare astfel: «Title» «Company_Name» «First_Name» «Last_Name».

6. Penultimul pas al vrăjitorului permite previzualizarea scrisorilor

circulare.

7. În ultimul pas are loc interclasarea efectivă acelor două documente: a. Într-un document nou – se obţine un document nou în care se

găsesc scrisorile personalizate pentru fiecare destinatar. b. Pentru imprimare – interclasarea are loc doar la imprimare.

În ambele cazuri există posibilitatea selectării tuturor înregistrărilor,

doar a celei curente sau specificarea înregistrărilor pentru care se face interclasarea.

Page 14: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Interclasarea documentelor, odată ce acestea sunt create, se poate face şi prin utilizarea opţiunilor din bara de lucru Mail Merge (View->Toolbars->Mail Merge).

2. Visual Basic for Applications (VBA) în Word

2.1 VBA – vedere de ansamblu

Visual Basic for Applications este un subset al limbajului Visual Basic utilizabil din interiorul aplicaţiilor care-l implementează (MS Word, MS Excel, ş.a.), şi este destinat automatizării anumitor activităţi de rutină (repetitive) ale utilizatorilor acestor aplicaţii.

VBA intră în categoria limbajelor – macro, termenul de macro semnificînd o secvenţă de operaţii memorată ca unitate de sine-stătătoare şi apelabilă de către utilizator. Iniţial, macro-urile erau create prin “înregistrarea” secvenţei de operaţii, conţinutul lor nefiind accesibil sau modificabil. Limbajele macro ne dau posibilitatea de a extinde funcţionalitatea macro-urilor prin elemente specifice limbajelor de programare.

Ca şi Visual Basic, VBA este puternic orientat pe obiecte; elementele aplicaţiilor sunt accesibile programatorului, fiind reprezentate prin obiecte VBA.

2.2 Înregistrarea macro-urilor

Înregistrarea unui macro se face cu ajutorul componentei Macro Recorder. Aceasta “traduce” acţiunile utilizatorului în instrucţiuni VB, acţiuni efectuate între momentul începerii înregistrării şi cel al sfîrşitului acesteia. Putem apoi edita codul rezultat, efectuînd modificările necesare.

Notă: codul generat de Macro Recorder nu poate include instrucţiuni de control (bucle, decizii), atribuiri de variabile, formulare proprii sau tratarea erorilor, fiind o simplă secvenţă de operaţiuni.

Cum înregistrăm un macro în Word? 1. Din meniul Tools se alege Macro->Record Macro 2. Se introduce numele macro-ului în cîmpul Macro name

Page 15: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

3. Se selectează documentul sau şablonul (template) în care se va memora macro-ul, din cîmpul Store macro in

4. Se dă o descriere a macro-ului în cîmpul Description 5. Dacă nu dorim accesarea macro-ului printr-un meniu sau buton

(toolbar) se apasă OK pentru a începe inregistrarea macro-ului; în caz contrar se continuă cu pasul următor

6. Din căsuţa Commands se selectează macro-ul pe care-l vom înregistra şi se efectueză drag&drop pe meniul sau toolbar-ul dorit. Este posibilă şi definirea unei taste de acces, prin clic pe Keyboard. Înregistrarea începe după ce se apasă pe butonul Close.

După începerea înregistrării, se efectuează activităţile pe care dorim

să le includem în macro. Nu se pot înregistra acţiuni ale mouse-ului în fereastra documentului (mutarea cursorului, selecţie, copiere, mutare), acestea trebuind efectuate cu ajutorul tastaturii pentru a fi înregistrate. Putem folosi totuşi mouse-ul pentru comenzi din meniuri sau butoane de pe toolbar, precum şi pentru selecţia opţiunilor.

Înregistrarea se încheie cu comanda Stop Recording.

Codul rezultat se poate vizualiza astfel: 1. Din meniul Tools alegem Macro->Macros (sau Alt+F8) Selectăm macro-ul dorit şi apăsăm butonul Edit.

2.3 Elemente ale interfeţei de programare

2.3.1 Colecţii, proprietăţi şi metode

Colecţii O colecţie este un obiect care conţine mai multe alte obiecte, de

obicei de acelaşi tip. Prin proprietăţi şi metode se poate modifica întreaga colecţie, sau numai obiecte individuale din aceasta. Uzual, numele unei colecţii este pluralul substantivului care defineşte tipul de obiecte care aparţin colecţiei.

Ex. Documents, Paragraphs, Words Proprietăţi Sunt atribute ale obiectelor sau ale comportamentului acestora.

Pentru a modifica aceste caracteristici trebuie modificate valorile

Page 16: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

proprietăţilor corespunzătoare. Nu toate proprietăţile permit modificarea prin program; în general, proprietăţile sunt de trei feluri:

• read-write: permit atît citirea, cît şi modificarea • read-only: permit numai citirea • write-only: permit numai modificarea (setarea) valorii

Metode Metodele sunt acţiuni care pot fi executate de către obiecte. Adesea

metodele au argumente (parametri) care precizează modul de execuţie al acţiunii.

2.3.2 Accesarea obiectelor Accesarea unui obiect dintr-o colecţie se poate face folosind o valoare index pentru colecţie, care poate fi un număr sau un nume.

Ex.: Documents(1).Close Pentru primul obiect de tip Document din colecţia Documents se

apelează metoda Close (pentru închiderea documentului).

Documents("Sales.doc").Close

Similar, dar se utilizează un nume de document (şir de caractere) pentru calificarea obiectului în cadrul colecţiei.

Notă: Toate colecţiile au metoda Item, care returnează un obiect individual din colecţie. Această metodă este implicită, deci apelul său poate fi omis pentru conciziune. Astfel, expresia Documents.Item(1) este echivalentă cu Documents(1).

Obiectele de tip colecţie pot avea metode care afectează toate obiectele din colecţie. De exemplu, colecţia Documents are o metodă Save care salvează toate documentele din colecţie: Documents.Save Şi obiectele Document au o metodă Save, care poate fi folosită pentru salvarea unui singur document. Documents("Report.doc").Save

Colecţiile şi obiectele VBA sunt structurate într-o manieră arborescentă; accesul la un anumit obiect se poate face parcurgînd această structură de la rădăcină (sau alt nod superior cunoscut ) către obiectul dorit.

Page 17: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Această parcurgere se face prin intermediul metodelor şi proprietăţilor obiectelor de pe nivelele superioare ale ierarhiei. În vârful ierarhiei se află obiectul Application.

Ex.: Application.ActiveDocument.Words(1)

Cum aflăm care sunt obiectele, proprietăţile şi metodele pe care trebuie să le folosim ?

Există cîteva căi pentru a ne ajuta să parcurgem ierarhia de obiecte: • Listarea automată a membrilor: în editorul VB, dacă scriem “.”

după numele unei metode sau proprietăţi, se va afişa o listă cu proprietăţile şi metodele disponibile.

• Help (ajutor) on-line: putem accesa informaţii despre obiecte, metode şi proprietăţi ale acestora, cu tasta F1, după ce am selectat în editor sau în fereastra Object Browser obiectul dorit.

• Object Browser: afişază membrii (proprietăţi şi metode) obiectelor Word.

• Diagrama “Microsoft Word Objects”, din cadrul Help-ului, prezintă dispunerea obiectelor în structura arborescentă şi permite accesarea directă a informaţiilor despre acestea.

• o cale comodă de a afla care sunt proprietăţile şi obiectele de care avem nevoie este înregistrarea unui macro şi editarea codului rezultat

2.3.3 Evenimente Word

În programarea orientată obiect putem asocia evenimentelor anumite secvenţe de instrucţiuni, care vor fi executate la apariţia acestor evenimente. Putem folosi deci evenimentele specifice aplicaţiei Word pentru a personaliza modul de lucru cu aceasta.

● Evenimentele Word sunt de trei categorii: • evenimente legate de obiectul Document • evenimente legate de obiectul-aplicaţie (Application) • evenimente legate de controale ActiveX incluse în document

(depăşesc scopul acestui material) ● Evenimente legate de obiectul Document

Obiectul Document poate răspunde la trei evenimente: New - are loc la crearea unui document pe baza şablonului

(document template) care conţine procedura pentru

Page 18: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

tratarea acestui eveniment. Această procedură are efect numai cînd este inclusă într-un şablon.

Open - are loc la deschiderea documentului Close - are loc la închiderea documentului

Procedurile pentru aceste evenimente trebuiesc incluse în modulul

(class module) ThisDocument. Ex.: Procedura de mai jos afişază un mesaj la crearea unui

document nou. Private Sub Document_New()

MsgBox "New document was created" End Sub

● Evenimente legate de obiectul aplicaţie (Application) Aceste evenimente privesc aplicaţia Word în ansamblul ei. Obiectul

Application poate răspunde la două evenimente: DocumentChange - are loc la crearea unui nou document, la deschiderea

unuia existent sau la schimbarea documentului activ. (Word permite deschiderea simultană a mai multor ferestre – document)

Quit - are loc atunci cînd utilizatorul părăseşte (închide) aplicaţia Word

Scrierea procedurilor de tratare a acestor evenimente este puţin mai

complicată: • mai intîi trebuie definită o clasă VB (class module), numită spre

exemplu EventClassModule, care să aibă un membru de tip Word.Application care acceptă evenimente:

Public WithEvents App As Word.Application

• în această clasă se scriu procedurile corespunzătoare evenimentelor, în legătură cu obiectul – aplicaţie declarat (App în acest exemplu)

Private Sub App_DocumentChange() . . . End Sub

• în final trebuie conectat obiectul declarat în clasa de mai sus cu obiectul Application. Într-un alt modul se includ următoarele instrucţiuni:

Dim X As New EventClassModule Sub Register_Event_Handler() Set X.App = Word.Application End Sub

Page 19: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Astfel se declară un obiect X din clasa EventClassModule, iar în procedura Register_Event_Handler se efectuează conectarea propriu-zisă. După rularea acestei proceduri, obiectul App membru al instanţei X desemnează obiectul Word.Application, iar procedurile de tratare a evenimentelor prevăzute de clasa EventClassModule vor fi rulate la apariţia evenimentelor.

2.4 Principalele obiecte şi colecţii Word

Principalele obiecte şi colecţii Word sunt prezentate în tabelul 1.1.

Obiecte şi colecţii Word

Tabelul 1.1 Obiect Semnificaţie Application Aplicaţia Word Proprietăţi: Documents Colecţia de documente deschise ActiveDocument Documentul activ IsObjectValid Verifică dacă obiectul referit de o variabilă

este valid Selection Zona selectată sau cursorul curent Colecţie de documente Metode: Run Rulează un macro Help Afişază informaţii din help-ul on-line Quit Închide aplicaţia Word, salvînd opţional

documentele deschise Repeat Repetă utima acţiune de editare (similar

cu comanda Repeat din meniul Edit) Documents Colecţie de documente Metode: Add Adaugă un document nou la colecţie Close Închide documentele din colecţie Item Identifică un element din colecţie Save Salvează documentele din colecţie Document Document Word Proprietăţi Paragraphs Colecţia paragrafelor din document Tables Colecţia tabelelor din document Sentences Colecţia propoziţiilor din document Section Colecţia secţiunilor din document

Page 20: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Words Colecţia cuvintelor din document Characters Colecţia caracterelor din document Saved Documentul a fost salvat de la ultima modificare Metode Activate Activează documentul Close Închide documentul PrintOut Tipăreşte documentul Save Salvează documentul SaveAs Salvează documentul sub alt nume Selection Zona selectată din documentul curent

sau cursorul (punctul de inserţie) Proprietăţi: Type Tipul zonei selectate Information Informaţii despre selecţie sau zonă (Range) Start Caracterul de început al selecţiei End Caracterul de sfîrşit al selecţiei Font Tipul de literă folosit şi caracteristicile sale Range Obiectul Range corespunzător selecţiei Metode: Collapse Reduce zona selectată la cursor Cut Mutarea obiectelor din selecţie în Clipboard

(similar cu Edit -> Cut ) Copy Copiere în Clipboard Paste Inserarea obiectelor din Clipboard în selecţie Delete Şterge continutul selecţiei Sort Sortează paragrafele din selecţie Range Reprezintă o zonă dintr-un document.

Majoritatea proprietăţilor şi metodelor sunt similare celor ale obiectului Selection.

Notă: cele mai importante proprietăţi ale obiectului Application

sunt considerate “globale”, nemaifiind necesară menţionarea acestui obiect. Application.ActiveDocument.Save este echivalent cu ActiveDocument.Save

2.4.1 Utilizarea obiectelor Selection şi Range

Obiectele Selection şi Range pot fi folosite pentru a modifica o zonă din document (spre exemplu prin formatare sau introducere de text). Diferenţa dintre ele constă în faptul că Selection cuprinde zona selectată la un moment dat în document (prin acţiuni ale utilizatorului sau prin

Page 21: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

instrucţiuni VB), în timp ce Range poate cuprinde orice zonă din document, zonă specificată de obicei prin program. Drept consecinţă, putem avea la un moment dat un singur obiect Selection, dar mai multe obiecte Range desemnînd zone diferite din document.

Cum stabilim zona desemnată de un obiect Selection? Dacă dorim modificarea selecţiei curente prin program astfel încît să

cuprindă un anumit obiect, putem folosi metoda Select asociată acelui obiect (Range, Paragraph, Row, Word, Table, etc.). Zona selectată poate fi apoi extinsă prin metode precum MoveDown, folosind parametrul wdExtend.

Cum stabilim zona desemnată de un obiect Range? Ca şi în cazul obiectului Selection, majoritatea componentelor unui

document au asociată proprietatea Range, care desemnează zona în care se găseşte obiectul respectiv. O altă modalitate este metoda Range a obiectelor de tip Document, care admite ca parametri începutul şi sfîrşitul zonei dorite. Un obiect Range îşi poate modifica zona pe care o desemnează prin metoda SetRange.

Legături între Range şi Selection Putem obţine un obiect Range care desemnează zona selectată

folosind proprietatea Range a obiectului Selection. MyRange = Selection.Range Invers, putem specifica zona selectată pentru a corespunde unui

obiect Range, folosind metoda Select a acestuia. MyRange.Select

2.4.2 Apelarea formularelor standard Word

Formularele standard Word (dialog boxes) pot fi folosite prin program pentru introducere de date sau controlul aplicaţiei. Ele se accesează ca elemente ale colecţiei Dialogs, fiind desemnate prin constante simbolice.

Există mai multe modalităţi de utilizare a acestor formulare, în funcţie de metoda folosită:

1. Show : Afişarea formularului şi executarea acţiunilor prevăzute de acesta.

Dialogs(wdDialogFileOpen).Show

Page 22: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Este afişat formularul standard de deschidere a unui fişier; dacă se apasă butonul OK, fişierul selectat este deschis.

2. Display: formularul este afişat, dar nu sunt executate acţiunile acestuia. Astfel, un formular poate fi folosit pentru a culege date ce vor fi folosite în program.

With Dialogs(wdDialogToolsOptionsUserInfo)

.Display MsgBox .Name

End With

Este afişat formularul User Information (corespunzător meniului Tools -> Options), după închiderea acestuia fiind afişat numele introdus de utilizator.

Modificările efectuate pot fi actualizate în formular prin metoda Execute, care nu presupune afişarea formularului.

With Dialogs(wdDialogToolsOptionsUserInfo) .Display If .Name <> "" Then .Execute End With Metodele Show şi Display întorc un rezultat numeric care reflectă

modul cum a fost închis formularul: -2 Butonul Close -1 Butonul OK 0 (zero) Butonul Cancel > 0 (zero) Un alt buton din formular: 1 - primul buton, 2 - al

doilea, etc.

3. Citirea sau setarea unor valori (proprietăţi) din cadrul formularului fără afişarea acestuia. Setarea valorilor trebuie urmată de apelul metodei Execute. Este recomandabil să modificăm proprietăţile direct, nu prin intermediul formularelor Word.

With Dialogs(wdDialogFormatParagraph)

.KeepWithNext = 1 .Execute End With

Se poate înlocui cu: Selection.Paragraphs(1).KeepWithNext = True

Page 23: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

2.5 Utilizarea formularelor proprii (User Forms)

Formularele proprii se definesc în componenta Visual Basic Editor ( meniul Tools -> Macro -> Visual Basic Editor), în mod similar cu formularele obişnuite Visual Basic. Reamintim pe scurt etapele definirii unui formular funcţional VB:

• proiectarea grafică a formularului, prin amplasarea componentelor corespunzătoare în fereastra acestuia

• stabilirea valorilor proprietăţilor acestor componente, inclusiv a numelui componentelor ce vor fi utilizate în program

• scrierea codului pentru evenimentele corespunzătoare componentelor interfeţei

Formularelor utilizator le corespund obiecte de tip UserForm, care

sunt conţinute în colecţia UserForms. Pentru utilizarea efectivă a formularelor se folosesc următoarele metode ale clasei UserForm:

Show - afişază formularul Hide - ascunde formularul

şi instrucţiunile Load - încarcă formularul, dar nu îl afişază Unload - descarcă formularul

Ex.: Load myForm myForm.Show Formularele definite de utilizator au caracter modal, adică utilizatorul trebuie să închidă formularul pentru a putea lucra în continuare cu aplicaţia. Pentru iniţializări necesare formularului se va scrie codul corespunzător în procedura Initialize a formularului. Obiectul UserForm are proprietatea Controls, care desemnează colecţia componentelor de interfaţă ale formularului (butoane, etichete, etc.)

2.6 Exemplu de aplicaţie VBA în Word

Ne propunem construirea unui macro pentru găsirea tuturor apariţiilor unui cuvînt (text) în document şi formatarea acestora, specificînd un anumit tip de literă, mărime etc. Pentru aceasta proiectăm un formular utilizator în care să putem introduce cuvîntul dorit şi să specificăm caracteristicile de formatare. Pentru uşurinţa utilizării vom prelua textul de

Page 24: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

căutat din zona selectată de utilizator, dacă aceasta există. Caracteristicile de formatare vor fi stabilite cu ajutorul formularului standard al Word-ului pentru acest scop (wdDialogFormatFont).

Formularul proiectat în Visual Basic Editor este prezentat în figura 1.6:

Figura 1.6

S-au folosit următoarele nume pentru componente: frmFindFormat - formular

cmdOK - butonul OK tbWhat - TextBox pt. textul de căutat cmdCancel - butonul Cancel tbFontName - Tipul de caracter cmdFont - butonul Font tbSize - Mărimea literei Se observă că butonul OK este iniţial dezactivat; el va fi activat după selectarea noilor caracteristici ale textului, cu ajutorul butonului Font. Acesta deschide formularul standard pentru selectarea caracteristicilor de formatare. TextBox-urile referitoare la formatarea textului nu sunt modificabile, fiind prevăzute numai pentru afişarea informaţiilor.

În continuare dăm codul VB asociat formularului: 'Declaratii globale Dim myFont As New Font 'variabila pentru referirea unui 'obiect de tip Font Private Sub cmdCancel_Click() 'Inchide formularul Unload Me End Sub

Page 25: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

Private Sub cmdFont_Click() Dim fontDlg As Dialog 'variabila pentru referirea 'unui obiect Dialog 'Asociem variabilei formularul standard 'pentru formatarea textului Set fontDlg = Dialogs(wdDialogFormatFont) With fontDlg 'afisam formularul standard .Display 'dupa inchiderea formularului standard 'preluam caracteristicile introduse 'ca proprietati ale variabilei myFont myFont.AllCaps = .AllCaps myFont.SmallCaps = .SmallCaps myFont.Underline = .Underline myFont.Bold = .Bold myFont.DoubleStrikeThrough = .DoubleStrikeThrough myFont.Emboss = .Emboss myFont.Engrave = .Engrave myFont.Italic = .Italic myFont.Kerning = .Kerning myFont.Name = .Font myFont.Outline = .Outline myFont.Shadow = .Shadow myFont.Size = .Points myFont.StrikeThrough = .StrikeThrough myFont.Subscript = .Subscript myFont.Superscript = .Superscript myFont.Underline = .Underline End With 'actualizam continutul TextBox-urilor tbFontName.Text = myFont.Name tbSize.Text = myFont.Size 'activam butonul OK cmdOK.Enabled = True End Sub Private Sub cmdOK_Click() 'selectia curenta este redusa la punctul de 'insertie si mutata la inceputul liniei Selection.HomeKey 'gaseste prima aparitie a textului din tbWhat 'Forward:= True - sensul de parcurgere al documentului

Page 26: 52327722 I Limbajul Visual Basic for Applications Vba Pentru Microsoft Word

'Wrap:=wdFindStop - oprirea cautarii la sfirsitul ‘documentului Selection.Find.Execute FindText:=tbWhat.Text, Forward:=True, Wrap:=wdFindStop 'repeta, cit timp a fost gasit textul Do While Selection.Find.Found = True 'modifica formatarea textului selectiei; 'la gasirea textului, selectia se modifica 'pentru a cuprinde aparitia curenta Selection.Font = myFont 'gaseste urmatoarea aparitie Selection.Find.Execute FindText:=tbWhat.Text, Forward:=True, Wrap:=wdFindStop Loop 'inchide formularul Unload Me End Sub Private Sub UserForm_Initialize() 'preluam textul selectat de utilizator 'inainte de rularea macro-ului If Selection.Type = wdSelectionNormal Then tbWhat.Text = Selection.Text Else tbWhat.Text = "" End If 'initializam TextBox-urile tbFontName.Text = Selection.Font.Name tbSize.Text = Selection.Font.Size End Sub

În final vom construi un macro, declanşat printr-un meniu sau buton, pentru a putea apela formularul din aplicaţia Word. Macro-ul trebuie să conţină instrucţiunea

frmFindFormat.Show