How about using Save?
This sample code loops through each mailmerge item in a mailmerge document, opens the item as a letter and saves it to a PDF using a field in the DataSource as a file name. There is no error coding and no attempt to check for duplicate file names. It is a snippet.
Dim iRec As Integer
Dim docMail As Document
Dim docLetters As Document
Set docMail = ActiveDocument
''There is a problem with the recordcount property returning -1
''http://msdn.microsoft.com/en-us/library/office/ff838901.aspx
docMail.MailMerge.DataSource.ActiveRecord = wdLastRecord
iRec = docMail.MailMerge.DataSource.ActiveRecord
docMail.MailMerge.DataSource.ActiveRecord = wdFirstRecord
For i = 1 To iRec
With docMail.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
'' This will be the file name
'' the test data source had unique surnames
'' in a field (column) called Surname
sFName = .DataFields("Surname").Value
End With
.Execute Pause:=False
Set docLetters = ActiveDocument
End With
docLetters.ExportAsFixedFormat OutputFileName:= _
"Z:\docs\" & sFName & ".pdf", ExportFormat:= _
wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
docLetters.Close False
docMail.MailMerge.DataSource.ActiveRecord = wdNextRecord
Next