Я пытаюсь полуавтоматизировать слияние электронной почты в Word. Excel является источником. При фильтрации я хочу, чтобы столбец "Дата уведомления" в электронной таблице был равен текущей дате. Можно ли это сделать, чтобы нам не приходилось вручную вводить текущую дату в поле "Сравнить с" каждый день в диалоговом окне "Фильтр и сортировка".
2 ответа
Если вы можете изменить электронную таблицу Excel, поместите ее в один из столбцов.
=IF(Y2=TODAY(),1,0)
Вы не можете сделать это в диалоговом окне фильтрации, но есть два варианта: a. Используйте вложенное поле, подобное этому, в начале основного документа слияния: [[отредактировано, чтобы показать <>, а не =]] {SKIPIF {MERGEFIELD thedatefieldname \@YYYYMMDD} <> {DATE \@YYYYMMDD}} b. Используйте VBA, чтобы установить соединение и предоставить немного SQL, который выполняет сравнение,
Два замечания по поводу (а) - я не уверен, что он будет работать с слиянием emial, так как Word может генерировать пустые электронные письма. В течение многих лет Microsoft говорила, что вместо 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
Имя листа - это имя листа (т. Е. Если это Лист1, используйте [Лист1 $]). Если это именованный диапазон, например myrange, используйте [myrange] и не добавляйте $.