Automatizări documente

Cum automatizăm completarea documentelor folosind Excel și Word

Publicat la 16/09/2025

În continuare voi arăta cum putem folosi un fișier Excel ca ”bază de date” și un template Word cu placeholdere pentru a genera documente individuale (fișiere Word sau PDF) cu ajutorul unui Macro, respectiv al codului VBA.  

Ce putem automatiza 

Putem automatiza în general documente standardizate, precum: Contracte, Procese-Verbale, Decizii interne, Rapoarte, Adeverințe, Diplome și Certificate de absolvire, Scrisori etc. 

În acest caz vom automatiza crearea unui Certificat de absolvire. 

De ce să automatizăm 

În primul rând, salvăm timp. Nu mai trebuie să dăm copy/paste de zeci de ori, nu mai trebuie să deschidem zeci de fișiere sau documente în același timp. 

În al doilea rând, reducem foarte mult erorile de tipar care apar prin completarea manuală a datelor. 

De asemenea, putem folosi baza de date în care păstrăm informațiile dacă o adaptăm automatizarii, având posibilitatea să selectăm exact câmpurile ce dorim să apară pe documentul generat. 

Ce ne trebuie (software)

Procedura de automatizare

Locația

Pentru ca automatizarea să funcționeze toate fișierele trebuie să fie într-o locație cunoscută, pe dispozitivul nostru. 

În cazul de față voi crea un folder nou pe hard disk și îl voi denumi ”Certificate de absolvire”. În acest folder voi adăuga toate fișierele necesare, template-ul Word, precum și fișierul Excel. 

Vom crea codul în așa fel încât să nu depindă de o locație fixă, adică dacă mutăm sau copiem folderul principal (Certificate de absolvire) în altă locație pe calculatorul nostru sau chiar pe un alt PC sau laptop, automatizarea să funcționeze oriunde, fără probleme.

Template-ul Word 

Pentru acest exemplu am creat un model de Certificat de absolvire folosind Canva și Word. Modelul poate fi descărcat de la finalul acestui articol. 

Certificatul de absolvire va trebui să fie transformat în template-ul de care noi avem nevoie prin adăugarea de placeholdere. Aceste placeholdere sunt formate de text plasate între acolade pe care codul VBA din Excel le va identifica ca locații unde trebuie să introducă automat textul dorit de noi. 

Exemplu de placeholder pentru nume: {nume_absolvent}

Exemplu de placeholder pentru absolvirea cursului: {curs_absolvit} 

Atenție: Formatarea fonturilor trebuie să rămână exact așa cum ne dorim chiar dacă textul va lua forma unui placeholder. Fiecare placeholder trebuie să fie unic: dacă adăugăm același placeholder în mai multe locuri din document, va fi introdus același text. 

Certificat fără placeholdere: 

Certificat de absolvire realizat în Word, folosit ca model.

Certificat cu placeholdere: 

Certificat de absolvire realizat în Word, folosit ca template prin introducerea de placeholdere.

Fișierul Excel (baza de date) 

Vom crea un fișier Excel pe care îl vom denumi ”Absolventi_cursuri” și pe care îl vom salva (Save as type:) ca Excel Macro-Enabled Workbook. Sheet-ul (foaia) Excel pe care vom lucra o vom denumi “Absolventi” (dublu click pe Sheet1 pentru a schimba numele foii Excel).

Acest document Excel va trebui să ruleze Macros și anume să preia și să ruleze codul VBA pentru a automatiza crearea certificatelor de absolvire. 

Din motive de siguranță Excel nu rulează Macros automat și trebuie activate din meniul File > Options > Trust Center > Trust Center Settings > Macro Settings prin selectarea “Enable all macros” sau ”Enable VBA macros” în funcție de varianta de Excel pe care o dețineți. 

Vom crea un tabel în Excel prin denumirea coloanelor corespondente placeholderelor și anume: Nr. crt. | Nume complet | Curs absolvit | Data absolvirii | Locul absolvirii | Nume formator | Serie și nr. certificat, pe care le vom completa cu date fictive pentru a testa funcționalitatea, ca în imaginea de mai jos.   

Imagine a unui fișier Excel, respectiv tabel cu numele absolvenților pentru care se vor genera Certificate de absolvire.

Putem adăuga și alte câmpuri dacă ne sunt necesare pentru baza noastră de date, precum CNP, date de identitate, cod client etc. dar momentan noi avem nevoie doar de cele ce vor fi preluate automat pe Certificatele de absolvire. 

Crearea Macro VBA – codul pentru automatizare 

Din fișierul Excel mergem la tab-ul Developer și dăm click pe butonul Visual Basic (stânga sus) sau apăsăm tastele Alt+F11 pentru a deschide fereastra de proiect VBA. 

În fereastra deschisă mergem sus la meniu și apăsăm Insert → Module, unde introducem următorul cod VBA (explicații mai jos), după care apăsăm Save și închidem fereastra Visual Basic: 

Sub GenereazaDiplome()
    Dim ws As Worksheet
    Dim wordApp As Object
    Dim wordDoc As Object
    Dim savePathDocx As String
    Dim savePathPdf As String
    Dim i As Long
    Dim basePath As String
    Dim diplomePath As String
    
    ' Lucram cu foaia Absolventi
    Set ws = ThisWorkbook.Worksheets("Absolventi")
    
    ' Pornim Word (în background)
    Set wordApp = CreateObject("Word.Application")
    wordApp.Visible = False
    
    ' Locatia unde este fisierul Excel
    basePath = ThisWorkbook.Path
    
    ' Cream subfolderul "Diplome" daca nu exista
    diplomePath = basePath & "\Diplome"
    If Dir(diplomePath, vbDirectory) = "" Then
        MkDir diplomePath
    End If
    
    ' Pentru fiecare rând din tabel
    For i = 2 To ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
        ' Deschidem template-ul (trebuie sa fie în acelasi folder cu Excel-ul)
        Set wordDoc = wordApp.Documents.Open(basePath & "\certificat_template.docx")
        
        ' Înlocuim placeholderele
        With wordDoc.Content.Find
            .Execute FindText:="{nume_absolvent}", ReplaceWith:=ws.Cells(i, 2).Value, Replace:=2
            .Execute FindText:="{curs_absolvit}", ReplaceWith:=ws.Cells(i, 3).Value, Replace:=2
            .Execute FindText:="{data_absolvirii}", ReplaceWith:=Format(ws.Cells(i, 4).Value, "dd.mm.yyyy"), Replace:=2
            .Execute FindText:="{locul_desfasurarii}", ReplaceWith:=ws.Cells(i, 5).Value, Replace:=2
            .Execute FindText:="{nume_formator}", ReplaceWith:=ws.Cells(i, 6).Value, Replace:=2
            .Execute FindText:="{serie_certificat}", ReplaceWith:=ws.Cells(i, 7).Value, Replace:=2
        End With
        
        ' Definim numele fisierului rezultat
        savePathDocx = diplomePath & "\Certificat_" & ws.Cells(i, 2).Value & ".docx"
        savePathPdf = diplomePath & "\Certificat_" & ws.Cells(i, 2).Value & ".pdf"
        
        ' Salvam certificatele în Word
        wordDoc.SaveAs2 savePathDocx
        
        ' Salvam certificatele si în PDF
        wordDoc.ExportAsFixedFormat OutputFileName:=savePathPdf, _
            ExportFormat:=17, _
            OpenAfterExport:=False, _
            OptimizeFor:=0, _
            Range:=0, _
            Item:=0, _
            IncludeDocProps:=True, _
            KeepIRM:=True, _
            CreateBookmarks:=0, _
            DocStructureTags:=True, _
            BitmapMissingFonts:=True, _
            UseISO19005_1:=False
        
        ' Închidem documentul fara sa afiseze nimic
        wordDoc.Close False
    Next i
    
    ' Închidem Word
    wordApp.Quit
    Set wordApp = Nothing
    
    MsgBox "Certificatele au fost generate în folderul: " & diplomePath & vbCrLf & _
           "Fisierele au fost salvate atât ca .docx, cât si ca .pdf", vbInformation
End Sub

Ce face acest cod?

Dacă dorim ca documentele să fie generate doar în Word putem șterge codul de generare PDF aflat între liniile ‘ Salvam certificatele si în PDF și ‘ Închidem documentul fara sa afiseze nimic. 

Cum rulăm codul?

Din tab-ul Developer apăsăm butonul Macros aflat în partea din stânga sus lângă Visual Basic. Se va deschide fereastra Macro unde avem listate codurile VBA create. În acest caz selectăm GenereazaDiplome și apăsăm butonul Run. 

Codul va rula câteva secunde iar la final va afișa mesajul de succes.

Acest cod VBA poate fi personalizat în funcție de necesități și folosit pentru generarea unor tipuri diverse de documente. 

De asemenea acest tip de automatizare poate fi realizat și în Google Workspace/Drive folosind Google Docs, Sheets și Apps Script, ceea ce voi demonstra într-un articol viitor. 

Fișiere

Model/Template Certificat de absolvire (Word):