我正在尝试在 Word 中半自动化电子邮件合并。Excel 是源。在过滤下,我希望电子表格中的“通知日期”列等于当前日期。我可以这样做吗,这样我们就不必每天在“过滤和排序”对话框中的“比较”字段中手动输入当前日期。
答案1
您无法在筛选对话框中执行此操作,但有两个选项:a. 在邮件合并主文档的开头使用这样的嵌套字段:[[edited to show <> Rather than =]] { SKIPIF { MERGEFIELD thedatefieldname \@YYYYMMDD } <> { DATE \@YYYYMMDD } } b. 使用 VBA 建立连接并提供一些进行比较的 SQL,
关于 (a) 的两点说明 - 我不确定它是否适用于电子邮件合并,因为 Word 可能会生成空白电子邮件。微软多年来一直在说应该使用过滤而不是 SKIPIF,但在我看来,说这话的人似乎没有意识到这两种方法的作用截然不同。
对于 (b),您需要类似以下内容的默认类型 (OLE DB) 连接:
Sub connectToMMDS()
ActiveDocument.MailMerge.OpenDataSource Name:="the full path name of your Excel workbook", _ SQLStatement:="SELECT * FROM [Sheetname$] WHERE [datecolumn] = date()"
End Sub
Sheetname 是工作表的名称(例如,如果是 Sheet1,则使用 [Sheet1$])。如果是命名范围(如 myrange),则使用 [myrange],并且不要添加 $。
答案2
如果您可以更改 Excel 电子表格,请将其放在其中一列上。
=IF(Y2=TODAY(),1,0)