Chia sẻ code macro: xuất nhiều file từ mail merge trong word.
<first> (don’t copy this)
Option Explicit
‘// Path to stored files
Const FOLDER_SAVED As String = “D:\ ”
‘// Select file database
Const SOURCE_FILE_PATH As String = “D:\Data.xlsx”
Sub TestRun()
Dim MainDoc As Document, TargetDoc As Document
Dim dbPath As String
Dim recordNumber As Long, totalRecord As Long
Dim Batdau, Ketthuc, giatri1, giatri2, i
Set MainDoc = ActiveDocument
With MainDoc.MailMerge
‘// Input value first
Batdau = “Nhap gia tri bat dau:”
giatri1 = InputBox(Batdau, Default)
‘// Inpurt value end
Ketthuc = “Nhap gia tri ket thuc:”
giatri2 = InputBox(Ketthuc, Default)
‘// if you want to specify your data, insert a WHERE clause in the SQL statement
‘// Sheet is database, it is Name of sheet on excel file
.OpenDataSource Name:=SOURCE_FILE_PATH, sqlstatement:=”SELECT * FROM [Sheet1$]”
‘// totalRecord = .DataSource.RecordCount
totalRecord = giatri2
i = giatri1
For recordNumber = i To totalRecord
With .DataSource
.ActiveRecord = recordNumber
.FirstRecord = recordNumber
.LastRecord = recordNumber
End With
.Destination = wdSendToNewDocument
.Execute False
Set TargetDoc = ActiveDocument
‘// Site_Name is field, you want to input name for files to created
TargetDoc.SaveAs2 FOLDER_SAVED & .DataSource.DataFields(“Site_Name”).Value & “.docx”, wdFormatDocumentDefault
‘// TargetDoc.ExportAsFixedFormat FOLDER_SAVED & .DataSource.DataFields(“Site_Name”).Value & “.pdf”, exportformat:=wdExportFormatPDF
‘// TargetDoc.Close False
TargetDoc.Close True
Set TargetDoc = Nothing
Next recordNumber
End With
Set MainDoc = Nothing
End Sub
<end>(don’t copy this)
Lưu ý: 1 số trường hợp copy về không chạy, các bạn vui lòng chỉnh lại dấu nháy ‘ và “. Do đưa lên web 2 dấu này nó bị thay đổi.
để chính xác hơn Mình gửi các bạn link download. Click
Sau khi download các bạn import trong macro