Banner

pondelok, 6. októbra 2014

Ako Excel upraví Word a uloží do PDF: VBA automatizácia


Máte štandardné wordovské dokumenty ako zmluvy, vyúčtovacie formuláre, prihlášky atď.. V nich potrebujete zmeniť zopár hodnôt ako dátum, meno, priezvisko, vek atď.. Tieto dokumenty sa v prevažnej miere ukladajú ako historické podklady, tlačia a posielajú koncovým adresátom.
Problém je však v tom, že tie hodnoty sa nachádzajú v Excel-i a my ich potrebujeme dostať do Word-u.
Tí z Vás, ktorí tieto veci robia ručne, tak pozor! … Existuje na to makro Winking smile.
 
Príklad: Pripravme si najprv Word dokument s názvom Dokument.docx, ktorý bude vyzerať takto:
 
 
image
 
Na obrázku vidíme, že hodnotu, ktorú plánujem meniť podľa zoznamu v Exceli je Zmena dňa:. Tým pádom si vytvorím záložku (Bookmark) Označím oblasť vo Worde – Insert Bookmark:

 

image

Túto oblasť pomenujem ako DEN a potvrdím voľbu kliknutím na Add:
 

image
Tým pádom som si pripravil predlohu vo Worde, ktorú potrebujem obmieňať o špecifický zoznam z Excelu. Ten bude jednoduchý:


image

Máme pripravený Word a Excel. Teraz nám stačí vytvoriť si VBA procedúru tak, aby po kliknutí na tlačítko sa otvoril Word, vložili doň hodnoty a povedzme aby sa dokument uložil (aj vytlačil, záleží od toho čo potrebujeme) pod špecifickým názvom ako PDF, v našom prípade “konkrétny deň.pdf”.
 

Sub PDF_word()

Dim Meno As String
Dim WAPP As ObjectDim WDOC As Object
Dim EWB As Workbook: Set EWB = ThisWorkbook
Meno = "Dokument.docx"

'=================Aktivujeme Word=======================================
'======================================================================
  
Set WAPP = CreateObject("Word.Application")
WAPP.Visible = True
Set WDOC = WAPP.Documents.Open(ThisWorkbook.Path & "\" & Meno)
     
'======================================================================
'======================================================================

For i = 3 To 9
        Dim denRNG: Set denRNG = WDOC.Bookmarks("DEN").Range
            denRNG.text = EWB.Sheets("ZOZNAM").Cells(i, 2).Value
        WDOC.Bookmarks.Add "DEN", denRNG
        WAPP.ActiveDocument.SaveAs2 ThisWorkbook.Path & "\" & Cells(i, 2).Value & ".pdf", 17
Next i

WAPP.Quit savechanges:=wdDoNotSaveChanges

End Sub

Výsledok vyzerá nasledovne:

image

V referenčnom adresári sú okrem vzorového wordu a excelu s markom uložené kópie dokumentov podľa dňa v týždni.

Cvičný súbor si môžete stiahnuť kliknutím na nasledujúci odkaz. V prípade dotazov, alebo ak by ste mali záujem o takéto riešenie na mieru:


downloads_normal

Žiadne komentáre:

Zverejnenie komentára

Poznámka: Komentár môže zverejniť iba člen tohto blogu.