我正在尝试从Excel电子表格中自动在Word中创建邮件合并。我录制了一个可以完成其中大部分工作的宏,但是当“收件人”编辑时,录制功能无法正常工作。对话框是打开的,所以我需要进入VBA代码进行排序和过滤。目前整个代码是这样的:
Sub Castingdirectors()
'
' Castingdirectors Macro
'
'
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
ChangeFileOpenDirectory "Y:\--file path redacted--\CASTING BOOK\"
ActiveDocument.SaveAs2 FileName:= _
"Y:\--file path redacted--\Casting Directors.docx", FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=14
ActiveWindow.Close
End Sub
这将生成所有条目的邮件合并。
我需要进行过滤,以便任何字段' CASTING DIRECTOR SORT'空白不包括在内,并按照CASTING DIRECTOR SORT升序排序。
我可以通过插入'跳过记录'来做到这一点。字段进入Word邮件合并文档的正文并进行'排序'手动,但我正在尝试创建一个' master'邮件合并文档,将多个宏分配给命令按钮,这些按钮将执行并保存不同的排序/过滤的不同邮件合并。
答案 0 :(得分:0)
这是一个好的开始。如果您在“编辑收件人”对话框中更深入一级,我认为您可以使用宏记录器获得所需的全部内容。查看底部的链接列表 - 选择"过滤"。
这允许您定义查询术语并对记录进行排序(对话框中的第二个选项卡)。
编辑:由于宏录制器不再选择它,您需要以另一种方式获取基本的滤镜代码。使用对话框定义过滤器后,创建一个小宏来打印出查询信息:
Sub GetQueryString()
Debug.Print ActiveDocument.MailMerge.DataSource.QueryString
End Sub
这应该将SQL语句打印到立即窗口(如果你没有看到它,则按Ctrl + G)。您可以在代码中使用它"按原样#34;如果它正确过滤和排序记录。或者你可以修改它以适合你的目的。