Hogyan lehet külön PDF vagy Word dokumentumokat menteni körlevél szerkesztőből (mailmerge)

Szerző: Csáki Dávid Közzétéve:

Néhány lépés alatt megmutatom, hogyan tudod egyszerűen lementeni külön PDF vagy Word (doc, docx) fileokba a mailmerge (körlevélszerkesztő) által létrehozott dokumentumokat. Makrók nélkül ezt a feladatot nem tudod jelenleg megcsinálni. Még az Office365-ben sincsen benne olyan funkció, ahol külön tudnád bontani a körlevélvarázslóval létrehozott dokumentumokat. De ne aggódj! Csak néhány lépés választ el a sikertől. A lenti kódot elég beillesztened, és néhány dolgot személyre szabnod benne (minden ott van a sorok mögött kommentben magyarul), és minden úgy fog működni, ahogyan Te szeretnéd. Nézzük hát a lépéseket!

PDF-ek és/vagy Word dokumentumok mentése külön fileokba körlevél szerkesztőből (mailmerge)

  1. lépés: körlevél szerkesztővel készítsd elő a Word-öt
  2. lépés: hogyha kész vagy, a menüben menj oda, hogy Fejlesztőeszközök/Visual Basic
  3. Másold be a lenti kódot a ThisDocument részhez
  4. Íme a VBA kód:

Option Explicit

Const FOLDER_SAVED As String = „D:\Profiexcel.hu\Tanúsítványok\Haladó\” ‘Ebbe a mappába kerülnek a dokumentumok
Const SOURCE_FILE_PATH As String = „D:\Profiexcel.hu\Tanúsítvány.xlsx” ‘Ez az excel, amiből az adatokat behúzzuk

Sub Mailmerge_to_PDF()
Dim MainDoc As Document, TargetDoc As Document
Dim dbPath As String
Dim recordNumber As Long, totalRecord As Long
Dim Mentes, Department_Folder, N2_Folder, N3_Folder

Set MainDoc = ActiveDocument
With MainDoc.MailMerge

‘WHERE SQL statement-el még lehet részletesebb lekérdezést is csinálni
.OpenDataSource Name:=SOURCE_FILE_PATH, sqlstatement:=”SELECT * FROM [Doksik$]” ‘Ez a sheet neve, ahol az adatok vannak az excelben. $ kell a végére!

totalRecord = .DataSource.RecordCount

For recordNumber = 1 To totalRecord

With .DataSource
.ActiveRecord = recordNumber
.FirstRecord = recordNumber
.LastRecord = recordNumber
End With

.Destination = wdSendToNewDocument
.Execute False

Set TargetDoc = ActiveDocument

‘Hogyha kellenek a word doksik, akkor a lenti sorral lehet lementeni őket a főmappába
‘TargetDoc.SaveAs2 FOLDER_SAVED & .DataSource.DataFields(„Név”).Value & „.docx”, wdFormatDocumentDefault

””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””’
‘ELŐFORDULHAT, HOGY SZERETNÉL ALMAPPÁKAT CSINÁLNI BIZONYOS OSZLOPOK ALAPJÁN, AKKOR EZT TUDOD HASZNÁLNI
‘Megcsinálom a szükséges mappákat Főmappa/Department/N2
‘Department_Folder = FOLDER_SAVED & .DataSource.DataFields(„Department”).Value ‘Ez a Department oszlopban lévő értékekből csinál külön mappákat az főmappán belül

‘ On Error Resume Next
‘ MkDir Department_Folder

‘Mentes = Department_Folder & „\N2_” & .DataSource.DataFields(„N2”).Value ‘Ez az N2 oszlop alapján csinál külön mappákat a Department mappán belül

‘On Error Resume Next
‘MkDir Mentes

‘Ezt a lépést most én kihagyom
””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””’

‘Lementem a főmappába a PDF doksikat
TargetDoc.ExportAsFixedFormat FOLDER_SAVED & .DataSource.DataFields(„Név”).Value & „.pdf”, exportformat:=wdExportFormatPDF

TargetDoc.Close False

Set TargetDoc = Nothing

Next recordNumber

End With

MsgBox „Kész vagyunk”

Set MainDoc = Nothing
End Sub

 

Összefoglalás

Bízom benne, hogy a VBA kódtól nem ilyedtél meg. Elegendő csak bemásolnod, és az első két sort átírnod, aztán rányomni a futtatás gombra, és a szemed előtt készül el minden egyes PDF file. Hogyha végzett a makró, akkor kiírja, hogy Kész vagyunk. Azt leokézod, és már látod is az összes lementett dokumentumot egy helyen vagy akár külön mappákba bontva is.

Ha van kérdésed/véleményed/hozzászólásod/javaslatod, kommentbe írd meg nyugodtan!