Membuat Sertifikat dengan Mail Merge (Microsoft Word) dan menyimpan secara individual dalam bentuk P

By Bli Admin 15 Des 2020, 05:16:38 WIB Tutorial

Anda mungkin mencari tutorial ini dalam beberapa waktu, dimana kita ingin membuat surat berantai atau sertifikat untuk puluhan atau bahkan ratusan orang. pada layanan Mail Merge pada Microsoft Word memang mendukung pembuatan surat masal (mail merge) dengan memanfaatkan sebuah data yang sebelumnya sudah dibuat berupa tabel pada microsoft word ataupun microsoft excel, yang kemudian di cetak secara masal dan otomatis pada printer berdasarkan data yang disiapkan.

masalahnya jika kita ingin mencetak surat atau sertifikat tersebut kedalam sebuah file pdf secara masal, Mail Merge pada Microsoft tidak mendukung. oleh sebab itu kita dapat mngunakan VB Scrip (macro) untuk menyelesaikan kasus tersebut. mari kita mulai.

kita siapkan template surat / sertifikat dan data yang akan di gunakan didalamnya.

Baca Lainnya :

pada halaman ini saya tidak akan membahas lagi tentang mail merge, untuk mengkoneksikan mail merge silahkan simak di link berikut... mailmerge

gambar : template surat/sertifikat

gambar  : tabel data  


hasil yang kita inginkan sebagai berikut


oke kita mulai langkah langkahnya...

  1. Pada Microsoft Word buka VBA Editor (tekan ALT F11)


2. Insert Modul

3. ketik kodenya di Editor sehingga menjadi seperti ini

Option Explicit
Const FOLDER_SAVED As String = "C:\Users\Resika Arthana\Google Drive (resika@undiksha.ac.id)\06 Kegiatan Undiksha\0 UPT TIK 2019\ICONMNS\LOA\LOA-ICONMNS2019-"
Const SOURCE_FILE_PATH As String = "C:\Users\Resika Arthana\Google Drive (resika@undiksha.ac.id)\06 Kegiatan Undiksha\0 UPT TIK 2019\ICONMNS\datapaper.xlsx"
Sub MailMergeToIndPDF()
Dim MainDoc As Document, TargetDoc As Document
Dim dbPath As String
Dim recordNumber As Long, totalRecord As Long
Set MainDoc = ActiveDocument
With MainDoc.MailMerge
'// if you want to specify your data, insert a WHERE clause in the SQL statement
.OpenDataSource Name:=SOURCE_FILE_PATH, sqlstatement:="SELECT * FROM [Sheet1$]"
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
TargetDoc.SaveAs2 FOLDER_SAVED & .DataSource.DataFields("ID").Value & ".docx", wdFormatDocumentDefault
TargetDoc.ExportAsFixedFormat FOLDER_SAVED & .DataSource.DataFields("ID").Value & ".pdf", exportformat:=wdExportFormatPDF
TargetDoc.Close False
Set TargetDoc = Nothing
Next recordNumber
End With
On Error Resume Next
Kill FOLDER_SAVED & "*.docx"
On Error GoTo 0
Set MainDoc = Nothing
End Sub
'adopted from https://learndataanalysis.org/automate-mail-merge-to-save-each-record-individually-with-word-vba/
'with additional delete docx file
view raw MailMergetoIndividualPDF.vb hosted with ❤ by GitHub

a. Pada baris 3, sesuikan folder file output

b. Pada baris 4, sesuaikan file data excel

c. Pada baris 15, sesuaikan file nama Sheet

d. Pada baris 32 dan 33, sesuaikan nama field yang digunakan sebagai nama file.

e. Pada baris 38–40 adalah untuk menghapus seluruh file berekstensi docx pada folder FOLDER_SAVED. HATI-HATI!. Jika tidak dibutuhkan bagian ini bisa dihapus

4. Setelah itu silakan RUN dan tunggu.

jadi dah


sumber

  1. https://learndataanalysis.org/automate-mail-merge-to-save-each-record-individually-with-word-vba/
  2. https://www.rondebruin.nl/win/s4/win004.htm







Write a Facebook Comment

Tuliskan Komentar anda dari account Facebook

View all comments

Write a comment