Hogyan lehet külön PDF vagy Word dokumentumokat menteni körlevél szerkesztőből (mailmerge)
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)
- lépés: körlevél szerkesztővel készítsd elő a Word-öt
- lépés: hogyha kész vagy, a menüben menj oda, hogy Fejlesztőeszközök/Visual Basic
- Másold be a lenti kódot a ThisDocument részhez
- Í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!