automatizarea completarii documentelor in word vba.pptx

Upload: mardari-cristina

Post on 03-Feb-2018

231 views

Category:

Documents


0 download

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