Расчет дат с полями (Microsoft Word)
Эйдан спросил, можно ли рассчитывать даты с помощью полей. Похоже, ему нужна дата на две недели в будущем, и он подумал, что должен быть простой способ вычислить такую дату в будущем с помощью полей. К сожалению, нет простого пути. Хотя Word позволяет выполнять простые вычисления с использованием числовых значений в полях, он не позволяет выполнять такие вычисления с использованием дат вместо чисел.
Однако вы можете разделить даты на их внутренние части (месяцы, дни и годы), а затем выполнить свои вычисления, но это создает совершенно новые проблемы. Внезапно вам нужно задуматься о том, что происходит, когда вы «катитесь» по истечении месяца или года. Математика, необходимая для такого расчета, нетривиальна. В качестве примера рассмотрим следующее составное поле:
{QUOTE "{SET Delay "14"}{SET "DaysInMonth" {IF {DATE \@ "MM"} <> 2 {=ROUND(30.575{DATE \@ "MM"},0)-ROUND(30.575{= {DATE \@ "MM"} –1},0)}{IF {=MOD({DATE \@ "yy"|, 4)} > 0 "28" "29"}}}{SET "NextMonth" {IF {DATE \@ "MM"} = 12 "1/97" "{= {DATE \@ "MM"} + 1}/97}}{IF {= {REF Delay} + {DATE \@ "dd"}} <= {DaysInMonth} {DATE \@ "MMMM {= {REF Delay} + {DATE \@ "dd"}}, yyyy"}{QUOTE "{NextMonth \@ "MMMM"} {= {REF Delay} + {DATE \@ "dd"} – {DaysInMonth}}, {IF {DATE \@ "MM"} <> 12 {DATE \@ "yyyy"}{DATE \@ "{= 1 + {DATE \@ "yyyy"} \# "xxxx"}" }}}}"}
Это вернет дату через две недели (указанную в первой строке, где задано значение задержки. Недостатком, конечно же, является составная природа поля — только в этом составном поле имеется более 30 различных полей! Даже это реализация, сколь бы грозной она ни казалась, не будет правильно обрабатывать високосные годы во всех случаях (она не будет правильно обрабатывать високосные годы в столетних годах, кратных 400.)
| Есть простой способ для вычисления дат в будущем? Да, есть — просто используйте макросы. С помощью всего лишь пары простых инструкций вы сможете быстро вычислить даты, которые в противном случае были бы трудными. Как это делается, было описано в предыдущих _WordTips; _ информация на следующей странице Word MVP:
http://word.mvps.org/FAQs/MacrosVBA/DateOfPrevMonth.htm
WordTips — ваш источник экономичного обучения Microsoft Word.
(Microsoft Word — это самая популярная программа для обработки текстов в мире.) Этот совет (1579) применим в Microsoft Word 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Word (Word 2007 и более поздних версий) здесь:
link: / wordribbon-Calculating_Dates_with_Fields [Расчет дат с полями]
.