Vba 在邮件合并中使用字段代码作为文件名
我想将我的邮件合并成单独的PDF文件(此部分正在工作)。但文件名保存为计数器,即数字Vba 在邮件合并中使用字段代码作为文件名,vba,pdf,ms-word,Vba,Pdf,Ms Word,我想将我的邮件合并成单独的PDF文件(此部分正在工作)。但文件名保存为计数器,即数字 Sub AllSectionsToSubDoc() Dim x As Long Dim Sections As Long Dim Doc As Document Application.ScreenUpdating = False Application.DisplayAlerts = False
Sub AllSectionsToSubDoc()
Dim x As Long
Dim Sections As Long
Dim Doc As Document
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Doc = ActiveDocument
Sections = Doc.Sections.Count
For x = Sections - 1 To 1 Step -1
Doc.Sections(x).Range.Copy
Documents.Add
ActiveDocument.Range.Paste
ActiveDocument.SaveAs (Doc.Path & "\" & x & ".pdf")
ActiveDocument.Close False
Next x
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
我想扩展这段代码,以便它使用文件名保存文件,这些文件名不是数字,而是取自我指定的一个字段代码
例如,如果我在VBA代码中指定字段代码«First_Name»作为文件名,并且有3个名称-(John、Peter、Samuel)3个文件应保存在我的目标文件夹中,分别为John.pdf、Peter.pdf、Samuel.pdf从数据源获取值,用逗号分隔,循环遍历返回的数组并分别保存每个文档 类似这样的东西(我还没能测试它)
如果值是单个名称(无逗号),则
Split()
函数将返回一个包含单个元素的数组 我设法找到了一个非常简单的解决方案。创建邮件合并后,我预览了结果并运行了以下宏
ChangeFileOpenDirectory "C:\User\Documents\folder\"
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
" C:\User\Documents\folder\" & ActiveDocument.MailMerge.DataSource.DataFields("Field") & ".pdf", _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForOnScreen, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
然后循环直到结束
ChangeFileOpenDirectory "C:\User\Documents\folder\"
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
" C:\User\Documents\folder\" & ActiveDocument.MailMerge.DataSource.DataFields("Field") & ".pdf", _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForOnScreen, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord