automatizarea completarii documentelor in word vba.pptx
TRANSCRIPT
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
1/36
Automatizarea completariidocumentelor in Word VBA
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
2/36
Directii de utilizare programarii in Word VBA
1. Crearea automatizata a raporturilor
2. Prelucrarea documentelor(statistici,prelucrarea seturilor mari de documentee.t.c)
3. Formatarea automatizata a textului
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
3/36
Modelul simplificat a obiectelor word VBA
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
4/36
Modelul simplificat a obiectelor word VBA
Cele mai dese ori utilizate in practica obiecte sunt:
Aplication
Document (cu colectia Documents)
Selection
Bookmark ( cu colectia Bookmarcs)
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
5/36
Exemple de utilizare
You might want to replace "of" with another word, such as"that has". The following general-purpose function can do just
that, and much more
Function RepText(sn As !tring" sFind As !tring" sRep As !tring# As
!tringDim x As Integer
x = InStr(sIn, sFind
!"ile x # $
sIn = %e&t(sIn, x ' ) s*ep ) +id(sIn, x %en(sFind
x = InStr(sIn, sFind
!end
*ep-ext = sIn
$nd Function
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
6/36
Exemple de utilizare
!s an eample of how to use the function, #ou can do the
following
sTemp % &T'is is m string of c'aracters)*sTemp % RepText(sTemp" &of&" &t'at 'as
$hen this code is eecuted, sTemp will contain the string :
&T'is is m string t'at 'as c'aracters)&
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
7/36
Exemple de utilizare
+entru a opera cu un paragraf"tabel sau o sectiiune
selectata (currentl selected#" putem simplu utiliza linia
de cod,
Selection.Collection/ame(
De exemplu:
Selection.0aragrap"s(.*ange.Font.Bold = -rue
Selection.Sections(.1eaders(2d1eaderFooter0rimar3.4
*ange.-ext = 51ello5
Selection.-ables(.Borders.6nable = False
In mod similar putem apela si la un obiect
+3*ange.0aragrap"s(.*ange.Font.Bold = -rue
Etc.
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
8/36
Exemple de utilizare
+sgBox Acti7eDocument.*ange($,
Selection.0aragrap"s(.*ange.6nd. 0aragrap"s.Count
+sgBox Acti7eDocument.*ange($,
Selection.Sections(.*ange.6nd. Sections.Count
Cu scopul de obtine unui numr de index, putem stabili un
interval de la nceputul documentului pina la sfirsitul unuiparagraf (sau altui obiect) putem utilia proprietatea -ountcum urmea din urmatoarele exemple:
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
9/36
Exemple de utilizare
+sgBox Acti7eDocument.*ange($,
Selection.-ables(.*ange.6nd.-ables.Count
!n plus putem utilia "i alt metod pentru ob#ine un
indece di gam (fr utilia obiectul $election), dup
cum urmea:
+sgBox Acti7eDocument.*ange($,+3*ange.4
0aragrap"s(.*ange.6nd.0aragrap"s.Count
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
10/36
Exemple de utilizare
!s an eample of how to use the function, #ou can do the
following
sTemp % &T'is is m string of c'aracters)*sTemp % RepText(sTemp" &of&" &t'at 'as
$hen this code is eecuted, sTemp will contain the string :
&T'is is m string t'at 'as c'aracters)&
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
11/36
Exemple de utilizare
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
12/36
.biectul Range
%n o&iect*angerepre'int o 'on continua dintr-un document.
iecare o&iect*angeeste definit de o po'i*ie (de caracter) de+nceput i de o po'i*ie (de caracter) de sfrit.
%tili'at pentru identificarea unor por*iuni din document,
o&iectul*angeeste similar o&iectuluiBookmark, diferen*afiind totui important un o&iect*angeeist doar att timp
ct se eecut procedura care l-a definit.
!tunci cnd po'i*ia de +nceput este identic cu po'i*ia de
sfrit, o&iectul*angeidentific punctul de inser*ie. u eist
limitri asupra +ntinderii unui o&iect*ange.
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
13/36
.biectul Range
/&iectele*angesunt independente de selec*ia din document sepoate defini i modifica un domeniu fr s se schim&e selec*ia. 0e
pot defini, de asemenea, domenii multiple +ntr-un document, +n
timp ce selec*ia este unic +ntr-un ochi de fereastr.
1entru a +n*elege toate propriet*ile o&iectului*ange(i ale altor
o&iecte, de altfel), tre&uie tiut czonele unui document se
presupun structurate 8n episoade (stories. 9n episod (stor3 este
o 'on de tet diferit de celelalte 'one din acel document. !stfel,
dac un document con*ine tet principal (&od# tet), note de su&sol
i anteturi, atunci documentul con*ine un episod cu tetul
principal, un episod cu note de su&sol i un episod cu anteturi.
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
14/36
.biectul Range
Wd$ndnotes!tor wd$/en+agesFooter!tor wd$/en+ages0eader!tor
WdFirst+ageFooter!tor wdFirst+age0eader!tor wdFootnotes!tor
WdMainText!tor wd+rimarFooter!tor wd+rimar0eader!torWdTextFrame!tor
Tipul episodului pentru un o&iect de gen domeniu (*ange), selec*ie
(Selection) sau semn de carte (Bookmark) este returnat de proprietateaStor3-3pe. 2unoaterea acestei propriet*i este important prin aceea
c mediul $ord deschide ferestre sau ochiuri diferite dup episodul +n
care este punctul de inser*ie (selec*ia), 1entru na3igarea programatic
+ntre aceste ochiuri tre&uie s se cunoasc 3aloarea propriet*ii
Stor3-3pe.
6xist $ tipuri di&erite de episoade posibile 8ntr'un document,
corespunz;nd urmtoarelor constante (din !dStor3-3pe:
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
15/36
$xemplu de utilizare obiectului Range
Exemplul urmtor scrie n bold primele %& caractere
ale documentului:Acti7eDocument.*ange(Start:=$, 6nd:=$.Bold = -rue
Dac este necesar ca obiectul Rangereturnat s fie referit demai multe ori, se va utilia instruc#iunea !etprin care se
atribuie obiectul returnat unei variabile obiect:
Dim m3*ange As *ange
Set m3*ange = Acti7eDocument.*ange
m3*ange.InsertA&ter -ext:=5Final5
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
16/36
$xemplu de utilizare obiectului Range
!n exemplul urmtor se observ utiliarea unui obiect Range
doar ca punct de referin# n document (asemenea unuiBoo1mar1):
Set inceputDoc = Acti7eDocument.*ange(Start:=$, 6nd:=$
'oi#iile de start "i end pot fi specificate direct sau prinintermediul propriet#ilor !tart"i $ndale altor obiecte cum ar
fi !election, Boo1mar1sau Range, ca n exemplul urmtor n
care se define"te un domeniu care se refer la a dou "i a treiapropoi#ie din document:
Set m3*ange=Acti7eDocument.*ange( 4
Start:=Acti7eDocument.Sentences(
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
17/36
Exemple de utilizare Range
Sub -est(Dim m3*ange As *ange
!it" Acti7eDocument
Set m3*ange=. 0aragrap"s(.*ange
m3*ange. Start =. 0aragrap"s(
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
18/36
$xemplu de utilizare obiectului Range
Deoarece o&iectul*angenu are un corespondent 3isual +n
document, se poate utili'a metodaSelecta o&iectului pentru a
produce selectarea tetului din domeniu i a 3erifica, astfel,
definirea corect a o&iectului*angem3*ange.Select
selectea' por*iunea de tet con*inut +n 3aria&ila m3*ange,
creia +n preala&il i s-a atri&uit un *ange.
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
19/36
$xemplu de utilizare obiectului Range
4emplele urmtoare sunt uor interpreta&ile. 1entru
eplica*ii complete se 3or studia o&iectele respecti3e.
Acti7e.Document.0aragrap"s(.*ange
Acti7eDocument.-ables(.*o2s(.*ange
Acti7eDocument.Bookmarks(.*ange444444
Set Doc = Acti7eDocument
Set m3*ange = Doc.*ange( 4 Start:=Doc.0aragrap"s(.*ange.6nd ' , 4
6nd:=Doc.0aragrap"s(.*ange.6nd '
m3*ange.InsertA&ter 5 s&r?it de paragra&.5
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
20/36
Automatizarea completarii documentelor in Word VBAAutomatic Document Template for Word
Crearea unui ast&el de template se des&asoara in
trei etape: 6laborarea proiectului unui document standard.
Designul templatului
6laborarea &ormei
Implementarea codului
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
21/36
!tandard Document
n/itatie la un nter/iew
%. Concretiam partile documentului care ramin constante si cele carenecesita sa fie scimbate
. Introducem Boo1mar1s in toate locurile de inserare
.% Tools 2 .ptions 2 View, selectam Boo1mar1s option
. 'lasam cursorul in locul inserarii si alegem Insert >Bookmark
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
22/36
!tandard Document
n/itatie la un nter/iew
*oate boo+mar+s pot fi inserate in timpul introducerii textului sau dupafinisarea crearii exemplului. 'oitionati cursorul in locul unde trebuie se
apara data ,Insert > Date and Time si alegeti formatulapentru asarea
datei. $alvati documentul sub nume InterviewLetter.doc)ista punctelor de inserare poate fi vauta in caseta Boo1mar1)
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
23/36
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
24/36
-rearea formei
Tools 2 Macro 2 Visual Basic $ditor sau Alt3F44
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
25/36
-rearea formei
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
26/36
-rearea formei
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
27/36
6laborarea codului 9serForm4Initialize(
0ri7ate Sub 9serForm4Click(
5acti3area formei6nd Sub
0ri7ate Sub 9serForm4Initialize(
56nitiali'area formei- poate fi introdus orice cod
[email protected] = -rue!it" cboInter7ie2%ocation
.AddItem 5%ondon5
.AddItem 5San Francisco5
.AddItem 5%unar Station5.AddItem 5upiter Station5
.AddItem 5Deep Space 5
.AddItem 5Deep Space 5
6nd !it"
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
28/36
6laborarea codului 9serForm4Initialize(
!it" cboInter7ie2Da3
.AddItem 5+onda35
.AddItem 5-uesda35
.AddItem 5!ednesda35
.AddItem 5-"ursda35
.AddItem 5Frida35
6nd !it"!it" cboInter7ie2Duration
.AddItem 5E "our5
.AddItem 5 "our5
.AddItem 5< "ours5.AddItem 5all morning5
.AddItem 5all a&ternoon5
.AddItem 5all da35
6nd !it"
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
29/36
6laborarea codului 9serForm4Initialize(
!it" cboSenderAddress
.AddItem 5%ondon5
.AddItem 5upiter Station5
.AddItem 5Deep Space 5
6nd !it"
6nd Sub
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
30/36
6laborarea codului pentru Clear Button
Private Sub cmdClear_Click()
[email protected] = -ruetxt*ecipient/ame.alue = /ull
txt*ecipientAddress.alue = /ull
txtSalutation.alue = /ull
txt0osition.alue = /ull
cboInter7ie2%ocation.alue = /ull
cboInter7ie2Da3.alue = /ull
txtInter7ie2Date.alue = /ull
txtInter7ie2-ime.alue = /ull
cboInter7ie2Duration.alue = /ulltxtSender/ame.alue = /ull
txtSender0osition.alue = /ull
cboSenderAddress.alue = /ull
End Sub
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
31/36
6laborarea codului pentru butoanele Cancelsi G
0ri7ate Sub cmdCancel4Click(
9nload +e
Acti7eDocument.Close Sa7eC"anges:=False
6nd Sub
0ri7ate Sub cmdG4Click(
Dim str@reeting As String
Dim strSenderAddress As String
I& opt@reeting = -rue -"en str@reeting = 5Hours sincerel3
I&opt@reeting< = -rue -"en str@reeting = 5Hours &ait"&ull3J
I&opt@reeting = -rue -"en str@reeting = 5Gind regardsJ
I&opt@reeting> = -rue -"en str@reeting = 5%i7e long and prosperJ
I&cboSenderAddress.alue = 5%ondon5 -"en
strSenderAddress = 5@alactic 6nterprises5 4
) 7bCr%& ) 5$$ Federation 0laza5 4
) 7bCr%& ) 5%ondon5 ) 7bCr%& ) 56art"J
6nd I&
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
32/36
6laborarea codului pentru butonul G
f cboSenderAddress.alue = 5upiter Station5 -"en strSenderAddress = 5@alactic 6nterprises5 4
) 7bCr%& ) 5KKK 9pper Commerce *ing /ort"5 4
) 7bCr%& ) 5upiter StationJ
6nd I&
I& cboSenderAddress.alue = 5Deep Space 5 -"en
strSenderAddress = 5@alactic 6nterprises5 4
) 7bCr%& ) 5>$ +ain Concourse !est5 4
) 7bCr%& ) 59F0 Deep Space J
6nd I&
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
33/36
6laborarea codului pentru butonul G(continuare
Application.Screen9pdating = False
!it" Acti7eDocument
.Bookmarks(5*ecipient/ame5.*ange.-ext = txt*ecipient/ame.alue
.Bookmarks(5*ecipientAddress5.*ange.-ext =
txt*ecipientAddress.alue
.Bookmarks(5Salutation5.*ange.-ext = txtSalutation.alue
.Bookmarks(50osition5.*ange.-ext = txt0osition.alue
.Bookmarks(5Inter7ie2%ocation5.*ange.-ext =
cboInter7ie2%ocation.alue
.Bookmarks(5Inter7ie2Da35.*ange.-ext = cboInter7ie2Da3.alue
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
34/36
6laborarea codului pentru butonul G(continuare
.Bookmarks(5Inter7ie2Date5.*ange.-ext = txtInter7ie2Date.alue
.Bookmarks(5Inter7ie2-ime5.*ange.-ext = txtInter7ie2-ime.alue
.Bookmarks(5Inter7ie2Duration5.*ange.-ext =
cboInter7ie2Duration.alue
.Bookmarks(5@reeting5.*ange.-ext = str@reeting
.Bookmarks(5Sender/ame5.*ange.-ext = txtSender/ame.alue
.Bookmarks(5Sender0osition5.*ange.-ext =
txtSender0osition.alue
.Bookmarks(5SenderAddress5.*ange.-ext = strSenderAddress
6nd !it"
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
35/36
Codul pentru a&isarea &ormei
Application.Screen9pdating = -rue
9nload +e
6nd Sub
0ri7ate SubDocument4/e2(
frm6nter3iew6n3itation.0how
6nd Sub
Testati si sal3ati documentul
Debug -7 Compile 0roLect.
Sa7e as t3pe '#Document -emplate
-
7/21/2019 Automatizarea completarii documentelor in Word VBA.pptx
36/36
6xemplu de !ord template completat