Sunteți pe pagina 1din 48

Programarea aplicaiilor

Microsoft Office

Evaluare
prima jumtate a semestrului
test scris
susinere n sptmna a 8-a

a doua jumtate a semestrului


proiect
predare n sptmna final

condiie de promovare: suma punctajelor la


cele dou probe s fie cel puin 10
condiii de susinere: cel mult 2 absene la
laborator n fiecare jumtate de semestru
2

Bibliografie ajuttoare
P. Blattner, L. Ulrich, K. Cook, T. Dyck, Totul
despre Ms Excel 2000, Ed. Teora, Bucureti,
2001
VBA for Office developers
http://msdn.microsoft.com/en-us/office/ff688774.aspx

Getting Started with VBA in Office 2010


http://msdn.microsoft.com/enus/library/office/ee814735(v=office.14).aspx

MSDN
3

Cuprins - prima jumtate

Introducere
Obiecte Excel
Obiecte Word
Obiecte PowerPoint
Dialoguri

I. Introducere

VBA
Visual Basic for Applications
face parte din familia de limbaje Visual Basic
scop - automatizarea funcionrii programelor
Microsoft
adoptat ulterior i de ali productori de
software
Corel
Autodesk etc.
6

Caracteristici VBA
limbaj compilat
dar cu multe caracteristici ale limbajelor
interpretate
ex.: nu este obligatorie declararea variabilelor

limbaj parial orientat-obiect


permite programatorului definirea unor module
similare claselor
esenial este ierarhia de obiecte predefinte MSOffice specific aplicaiei folosite
Word, Excel, PowerPoint, ...
7

Proiecte VBA - coninut


module de cod (.bas)
conin declaraii i proceduri

module de clas (.cls)


conin definiiile claselor utilizator

forme (.frm)
conin definiiile dialogurilor utilizator i codul
pentru tratarea evenimentelor asociate

referine
indic entitile din alte proiecte/aplicaii accesate
din proiectul curent
8

Macrouri (1)
sunt de fapt proceduri
apelabile de ctre utilizator
pot fi asociate unor combinaii de taste

creare
scrierea codului n editorul VBA
nregistrarea aciunilor efectuate de utilizator
(Macro Recorder)
apoi se poate observa/edita codul astfel generat n
editorul VBA
util pentru depanare i nelegerea aciunilor
9

Macrouri (2)
aciunile care se pot realiza prin cod sunt
similare celor care pot fi realizate direct din
interfaa programului
deci, pentru a putea scrie cod corect, trebuie s
cunoatem bine aplicaia n care ne aflm
MS-Office pune la dispoziie o serie de obiecte
predefinite care permit accesul la
funcionalitile aplicaiei de baz
unele sunt generale
majoritatea sunt specifice fiecrei aplicaii

10

Editorul VBA
accesibil
prin combinaia de taste Alt + F11
prin combinaia de taste Alt + F8, urmat de
selectarea unui macro i editarea acestuia
din interfaa programului folosit (Word, Excel,
PowerPoint, ...)

permite
editarea codului
execuia i depanarea codului
vizualizarea proprietilor obiectelor etc.
11

Sistemul de ajutor
accesibil
din interfaa editorului VBA
Help - Microsoft Visual Basic Help

prin tasta F1
furnizeaz automat informaii despre cuvntul pe care
este poziionat cursorul (cuvnt-cheie, obiect,
metod/proprietate, procedur etc.)

foarte util - autocompletarea


recunoate att obiectele predefinite, ct i
variabilele/procedurile definite de utilizator
12

Module de cod
opiuni de compilare
cuvntul-cheie Option

declaraii
variabile globale
pot lipsi

proceduri
nu pot fi imbricate
pot fi apelate din alte proceduri
sau direct de ctre utilizator
13

I.1. Declaraii

Domenii de vizibilitate (1)


variabile locale
declarate n interiorul procedurilor
cuvinte-cheie: Dim, Static

variabile globale, vizibile la nivel de modul


declarate n seciunea de declaraii
cuvinte-cheie: Dim, Private

variabile globale, vizibile din alte module


declarate n seciunea de declaraii
cuvnt-cheie: Public
15

Domenii de vizibilitate (2)


proceduri vizibile la nivel de modul
cuvnt-cheie: Private
nu pot fi apelate direct de ctre utilizator

proceduri vizibile din alte module


cuvnt-cheie: Public (implicit)
pot fi apelate direct de ctre utilizator
dac nu au parametri

16

Tipuri de date
predefinite
este introdus un tip special (Variant)
se poate substitui oricrui tip predefinit
mai puin String de lungime variabil
poate lua valori speciale

Empty - neiniializat
Null - nu conine date
Error - valoare primit printr-o operaie eronat
Nothing - pentru variabile de tip Object

definite de utilizator
similar structurilor din limbajul C
17

Tipuri de date predefinite


Boolean
Byte
Currency
Date
Decimal
Single, Double
Integer, Long
Object
String
Variant

True, False
0-255
reprezentri financiare
reprezentarea datei i orei
numere zecimale
numere n virgul mobil
numere ntregi
referine la obiecte MS-Office
iruri de caractere
tip universal

18

Declaraii - constante
[Public|Private] Const name [As type] = expression

dac tipul nu este precizat, se va ataa tipul cel


mai apropiat de expresia indicat
vizibiltate implicit: Private
exemple
Const NrLinii = 15
Public Const Mesaj = "Acesta este un sir de caractere"
Const NrLinii = 15, Pondere As Single = 1.25
19

Constante predefinite
specifice diverselor obiecte sau proceduri
predefinite
numele lor au prefixe standard
Excel: xl (ex. xlNoChange)
Word: wd (ex. wdCharacter)
PowerPoint: pp (ex. ppLayoutBlank)

atenie
pot exista constante diferite cu aceleai valori
se recomand utilizarea fiecrui nume de constant
doar n contextul n care a fost introdus
20

Declaraii - variabile (1)


cuvinte-cheie: Dim, Private, Public, ReDim,
Static
dac nu este indicat tipul, este considerat
implicit Variant
Dim [With Events] name[([subscripts])] [As [New] type]
Private [With Events] name[([subscripts])] [As [New] type]
Public [With Events] name[([subscripts])] [As [New] type]
Static name[([subscripts])] [As [New] type]
ReDim [Preserve] name[([subscripts])] [As type]
21

Declaraii - variabile (2)


tablourile pot avea cel mult 60 de dimensiuni,
separate prin virgule
indicii pot fi precizai
(lower To upper)
(upper)
implicit, indicele minim este 0
valoarea implicit poate fi modificat prin program

()
tablou alocat dinamic
poate fi dimensionat ulterior, prin ReDim
22

Declaraii - variabile (3)


cuvntul-cheie New
utilizat doar pentru variabile obiect
variabila este creat la prima referire a sa

exemple de declaraii
Dim i As Integer
Public obiect
tip implicit Variant
Dim matrice(1 To 10, 9) As Double
Dim wdoc As Document
document Word
23

Tablouri
pot fi create prin declaraiile de variabile, ca
anterior
dinamic - prin apelul funciei Array

variabila rezultat este de tip Variant


indicele inferior este implicit 0 (se poate modifica)
exemplu
A = Array("unu", "doi", "trei")

indiferent de modul de creare, indicii inferior i


superior pot fi obinui prin funciile LBound i
UBound
24

Declaraii - proceduri (1)


tipuri de proceduri
Sub
Function
Property
specific definirii proprietilor unui obiect

orice instruciune trebuie s aparin unei


proceduri
nu exist program principal sau funcie main
procedurile sunt apelate de utilizator
25

Declaraii - proceduri (2)


[Private|Public] [Static] Sub name([arglist])
[declarations]
[instructions]
[Exit Sub]
[instructions]
End Sub

cuvntul-cheie Static: toate variabilele locale


sunt statice
argumentele sunt separate prin virgule
26

Declaraii - proceduri (3)


argumente
[Optional] [ByVal|ByRef] [ParamArray] name[()] [As type]
[=defaultvalue]

argumentele opionale - doar la finalul listei


cuvntul-cheie ParamArray - tablou opional de
elemente de tip Variant
poate aprea doar ca ultim argument

defaultvalue - valoarea implicit pentru argumentele


opionale
pentru tipul Object poate fi doar Nothing
27

Declaraii - proceduri (4)


[Private|Public] [Static] Function name([arglist]) [As type]
[declarations]
[instructions]
[name = expression]
[Exit Function]
[instructions]
[name = expression]
End Sub

atribuirile care au n membrul stng numele


funciei stabilesc valoarea returnat
28

Execuia procedurilor (1)


din interfaa programului (Alt + F8)
doar procedurile Sub publice i fr parametri

din cod
prin apelare direct
[[Project_name.]Module_name.]Proc_name Arglist
prin instruciunea Call
Call [[Project_name.]Module_name.]Proc_name (Arglist)
parantezele sunt necesare pentru lista de parametri
doar la utilizarea instruciunii Call
29

Execuia procedurilor (2)


parametrii efectivi
trebuie s respecte tipul parametrilor formali
tipul Variant poate nlocui aproape orice alt tip

unii pot fi opionali


pot fi identificai prin nume n loc de poziie
arg_name:=arg_value
caz n care poziia n lista argumentelor nu mai este
relevant

Selection.HomeKey(wdLine, wdExtend)
Selection.HomeKey Extend:=wdExtend, Unit:=wdLine
30

I.2. Instruciuni

Generaliti (1)
se recomand scrierea cte unei instruciuni pe
un rnd
dac o instruciune este prea lung
poate fi continuat pe mai multe rnduri prin
utilizarea simbolului "_" la finalul fiecrei linii, mai
puin cea final
simbolul trebuie separat prin spaiu de restul liniei

dou instruciuni se pot scrie pe o aceeai linie


dac sunt separate de ":"
32

Generaliti (2)
dac este necesar, o linie poate avea un
identificator

etichet - orice identificator care ncepe din prima


coloan i se termin cu caracterul ":"
numr - orice combinaie de cifre care ncepe din
prima coloan i este unic n modulul respectiv

comentarii

dup caracterul apostrof

nainte de care, pe aceeai linie, pot exista i instruciuni

dup cuvntul-cheie Rem

n acest caz, pe linie poate exista doar comentariul


33

Operatori
aritmetici: ^ (ridicare la putere), *, /, -, +
(adunare, concatenare iruri), \ (mprire
ntreag), mod
de comparare: <, <=, >, >=, =, <>, Is (referine
la acelai obiect), Like (potrivire de iruri)
de concatenare: +, &
logici: And, Eqv, Imp, Not, Or, Xor
acioneaz att pentru condiii de test compuse, ct
i pe bii
34

Instruciuni de atribuire
valori care nu reprezint obiecte - Let
cuvntul-cheie poate lipsi
[Let] i = i + 1

obiecte - Set
Set newdoc = ActiveDocument

operaii speciale pe iruri - LSet, RSet


LSet s1 = s2
RSet s1 = s2
copiere cu aliniere la stnga, respectiv dreapta
35

Instruciuni de control (1)


apel de subrutin
GoSub line

line:

Return

salt
GoTo line

tratarea erorilor
On Error
36

Instruciuni de control (2)


prsirea structurii de control curente

bucle: Exit Do, Exit For


procedur: Exit Sub, Exit Function
a se vedea n continuare structurile de control
corespunztoare

terminarea imediat a execuiei programului


nu doar a buclei/procedurii curente

End
suspendarea execuiei programului
Stop
37

Instruciuni de control (3)


gruparea instruciunilor pentru accesul facil la
un obiect
With object
[statements]
End With

bucl simpl
While condition
[statements]
Wend
38

Instruciuni de control (4)


bucle cu numr nedeterminat de iteraii
cu test la nceput
cu test la final
Do [{While|Until} condition]
[statements]
[Exit Do]
[statements]
Loop

Do
[statements]
[Exit Do]
[statements]
Loop [{While|Until} condition]
39

Instruciuni de control (5)


bucl cu numr determinat de iteraii
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next [counter]
atenie la cazurile n care valoarea final nu este
constant pe durata buclei
ex.: valoarea unei proprieti a unui obiect
40

Instruciuni de control (6)


parcurgerea unor colecii sau tablouri
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
n cazul coleciilor, ordinea parcurgerii elementelor
poate s nu fie sub controlul programatorului
41

Instruciuni de control (7)


decizie
If condition1 Then
[statements]
[ElseIf condition2 Then
[statements]

[Else
[statements]]
End If
atenie la scrierea pe linii a instruciunii
42

Instruciuni de control (8)


selecie

Select Case testexpression


Case expression1
[statements]
Case expression2
[statements]
...

[Case Else
[statements]]
End Select
expresiile 1, 2, ... nu sunt neaprat constante
43

I.3. Intrri-ieiri simple

Intrri-ieiri
comunicarea cu utilizatorul
dialoguri predefinite
intrare - InputBox
ieire - MsgBox

dialoguri definite de utilizator

lucrul cu fiiere
instruciuni pentru lucrul la nivel jos

lucrul cu baze de date


obiecte specifice accesului la beze de date (ADO,
DAO)
45

Funcia InputBox n VBA

var = InputBox(Prompt[, Title] [, Default] [, Xpos] [, Ypos]


[, Helpfile, Context])

valoarea returnat - de tip String


textul introdus de utilizator, dac s-a apsat butonul
OK
irul vid, dac s-a apsat butonul Cancel

46

Funcia InputBox n Excel


similar celei generale din VBA
are n plus un argument (Type) care controleaz
tipul permis pentru intrare
0 - formul, 1 - numr, 2 - String, 4 - Boolean, 8 Range, 16 - eroare, 64 - tablou de valori
sunt permise i combinaii (ex. 1 + 2), caz n care
sunt acceptate mai multe tipuri de intrri

din Excel se poate apela i funcia general


apelul funciei Excel
var = Application.InputBox(, Type)
47

Funcia MsgBox
var = MsgBox(Prompt[, Buttons] [, Title] [, Helpfile, Context])

parametrul Buttons indic butoanele prezente


valorile posibile pot fi date direct (numeric) sau
prin constante predefinite
ex.: vbOKOnly = 0, vbOKCancel = 1 etc.

valoarea returnat indic butonul apsat


similar, valorile posibile pot fi specificate numeric
sau prin constante predefinite
ex.: vbOK = 1, vbCancel = 2 etc.
48

S-ar putea să vă placă și