Как объединить дату как формат даты (18/06/2019), а не число (43682) - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь отправить .docx по почте с помощью макроса vba excel.

Это отлично работает для String, но когда я хочу объединить дату в удобочитаемый формат даты, это не так.

Чтобы исправить это, я попытался использовать следующий код строки, но у меня всегда есть дата в виде числа:

Я получил: 43682 , а не ожидаемый результат: 18/06/2019

{ MERGEFIELD MyDate \@ "dddd, dd MMMM yyyy" }

{ MERGEFIELD MyDate \@ "d MMMM yyyy" }

{ MERGEFIELD MyDate \@ "d-MMMM-yyyy" }

{ MyDate \@ "d MMMM yyyy" }

{ MERGEFIELD MyDate \@ MM/dd/yyyy}

В моем файле Excel объединены данные в формате даты, я что-то не так делаю?

1 Ответ

1 голос
/ 19 июня 2019

Поскольку вы еще не опубликовали свой код VBA, невозможно точно знать, в чем проблема.Однако это, скорее всего, связано с тем, что ваше почтовое соединение подключается к открытой книге, содержащей данные.Другая возможность состоит в том, что вы используете смешанные типы данных в соответствующем столбце, поэтому mailmerge рассматривает даты как числа.Кодирование полей в основном документе mailmerge может использоваться для решения таких проблем.Например, чтобы преобразовать 43682 в 18/06/2019, можно использовать поле с кодировкой:

{QUOTE{SET jd{=2415019+{MERGEFIELD MyDate}}}
{SET e{=INT((4*(jd+32044)+3)/146097)}}
{SET f{=jd+32044-INT(146097*e/4)}}
{SET g{=INT((4*f+3)/1461)}}
{SET h{=f-INT(1461*g/4)}}
{SET i{=INT((5*h+2)/153)}}
{SET dd{=h-INT((153*i+2)/5)+1}}
{SET mm{=i+3-12*INT(i/10)}}
{SET yy{=100*e+g-4800+INT(i/10)}}
"{dd}-{mm}-{yy}" \@ "DD/MM/YYYY"}

Примечание: Пары фигурных скобок (т. Е. {{} ') ДляПриведенный выше пример все создается в самом документе с помощью Ctrl-F9 (Cmd-F9 на Mac или, если вы используете ноутбук, вам может понадобиться Ctrl-Fn-F9);Вы не можете просто напечатать их или скопировать и вставить их из этого сообщения.Также нецелесообразно добавлять их через какие-либо стандартные диалоги Word.Разрывы строк на самом деле не нужны, но они действительно облегчают структуру.

Макрос для преобразования приведенного выше в рабочее поле см. Преобразование текстовых представлений полей в рабочие поля в Mailmerge Советы и хитрости нить по адресу: http://www.msofficeforums.com/mail-merge/21803-mailmerge-tips-tricks.html

...