フィールドを使用した日付の計算(Microsoft Word)
Aidanは、フィールドを使用して日付を計算できるかどうか尋ねました。彼は2週間先の日付を望んでいるようで、フィールドを使用してそのような将来の日付を計算する簡単な方法があるはずだと考えました。残念ながら、簡単な方法はありません。 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"}" }}}}"}
これにより、日付が2週間で返されます(遅延値が設定されている最初の行で指定されます。もちろん、欠点はフィールドの複合的な性質です。この複合フィールド内には30を超える異なるフィールドがあります。これでも実装は、見た目は手ごわいですが、すべての場合にうるう年を正しく処理するわけではありません(400で割り切れる世紀のうるう年を正しく処理することはできません)
簡単な方法はありますか?将来の日付を計算するには?はい、あります。マクロを使用するだけです。いくつかの簡単な手順で、他の方法では難しい日付計算から簡単な作業を行うことができます。これを行う方法については、以前の_WordTips; _で説明しました。次のWordMVPページの情報:
http://word.mvps.org/FAQs/MacrosVBA/DateOfPrevMonth.htm
_WordTips_は、費用対効果の高いMicrosoft Wordトレーニングのソースです。
(Microsoft Wordは、世界で最も人気のある単語処理ソフトウェア。)このヒント(1579)が適用されますMicrosoft Word 97、2000、2002、および2003へ。Word(Word 2007以降)のリボンインターフェイスに関するこのヒントのバージョンは、次の場所にあります。