• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Word差し込み印刷で日付を来月に変更したい)

Word差し込み印刷で日付を来月に変更する方法

このQ&Aのポイント
  • Word 2000でAccessから差込印刷を試みています。データにある日付の一ヵ月後を、AccessのデータはそのままWord側で表示させたいのですがどのようにすればいいでしょうか。
  • Word 2000で差し込み印刷を試みている場合、Accessから取得した日付データを元に日付を一ヵ月後に変更し、Word側で表示する方法を知りたいです。
  • Word 2000の差し込み印刷で、Accessのデータにある日付を一ヵ月後に変更して表示する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

差し込んだ日付を、必ず来月の月末になるように表示させるのですね 質問された内容を表示させる基本的なフィールドコードを示します。 差し込みフィールドの名前が「日付」となっています。 { QUOTE { set m { MERGEFIELD 日付 \@ M } } ↓ { set y { MERGEFIELD 日付 \@ yyyy } } ↓ { set d { MERGEFIELD 日付 \@ d } } ↓ { SET yy { IF m = "12" { =y+1 } { =y } }} ↓ { SET mm { IF m = "12" "1" { =m+1 } }} ↓ { SET dd { =MAX(1,IF((mm=2),28+(MOD(yy,4)=0)+(MOD(yy,400)=0)-(MOD(yy,100)=0), ↓ IF((mm=4)+(mm=6)+(mm=9)+(mm=11)+(d>30)=1,30,31)))} } ↓ { =dd*10^6+mm*10^4+yy \# "00'-'00'-'0000" } \@ "ggge年MM月dd日" } 上記のフィールドコードは見易いように改行をしていますが、一段落に まとまっているものです。 行末の「↓」の記号は[ Shift+Enter ]キーで改行を示しているので、 作成するときは改行なしにするか[ Shift+Enter ]キーで段落内改行を いれて、別段落に分割しないようにして下さい。 (編集記号を表示して、段落記号を確認できるようにして下さい) 少し気になるのは、例として示しているデータが" 20070930 "になって いますが、これは日付として認識できるものなのでしょうか? Accessから差し込みしたことが無いので、差し込みデータの形式として 認識できる形式がどのようなものなのか知らないので、Excelでの日付 データである" ####/##/## "の形式で対応できるようにしていますが、 8桁の数字だけだとたぶん日付として認識しないと思います。

canoko
質問者

お礼

大変丁寧な回答ありがとうございます。 Accessのデータは確認してみましたら、" ####/##/## "の形式になっていました。紛らわしい書き方をしてしまいもうしわけありません。 書いていただいたものをそのまま写して試してみましたが 30日の月がうまく反映されず30-9-2007のような反映になってしまうのですがこれはどうなおせばよいのでしょうか…。 2月の28日や29日はきちんと平成18年2月28日というような形式になるのですが…。 何度も重ねてお伺いしてもうしわけありません。 データの入れ方に何か問題があるようでしたらなおして確認いたしますので、お教えいただけるとたすかります。

その他の回答 (2)

回答No.3

閉じカッコ「 ) 」の数は正しく入れていますか? 前の回答ではカッコの前後に半角スペースが入っていないので、見難い ことで間違った数になっている可能性があります。 (でも2月は正しいのですよね。これが不思議) { QUOTE { set m { MERGEFIELD 日付 \@ M } } { SET y { MERGEFIELD 日付 \@ yyyy } } { SET d { MERGEFIELD 日付 \@ d } } { SET yy { IF m = "12" { =y+1 } { =y } } } { SET mm { IF m = "12" "1" { =m+1 } } } { SET dd { = MAX ( 1,IF ( (mm=2) ,28 + (MOD (yy,4) = 0) + (MOD (yy,400) = 0) - (MOD (yy,100) = 0), IF ( (mm=4) + (mm=6) + (mm=9) + (mm=11) + (d>30) = 1,30,31) ) ) } } { = dd*10^6 + mm*10^4 + yy \# "00'-'00'-'0000" } \@ "ggge年MM月dd日" } 上記の { } の中だけコピーして空白フィールド内に貼り付けしてみて、 動作を確認してみてはいかがでしょうか。 それから、各SETフィールドの後ろにある{ }を選択して、右クリックから [フィールドの表示/非表示]を選択し内容を確認してみてください。 そして最後にある{ = dd*10^6 + mm*10^4 + yy \# "00'-'00'-'0000" } だけを選択してフィールドを非表示にして「30-09-2007」になっているかを 確認し、間違っていないなら日付のスイッチで「平成19年9月30日」になる と思います。 私はあるマクロを使用して、上記テキストの内容をフィールドコードに変換 して確認していますし、逆にうまく表示できているフィールドコードの内容 をテキスト化して回答文に載せているので、間違いはないとは思います。 もう一度{ }の数や( )の数、カンマなどを確認して作り直してみて下さい。

canoko
質問者

お礼

大変丁寧にお答えいただきありがとうございました。 おっしゃる通りにコピーして空白フィールドに貼り付けも何度か試してみましたが 、まだ、うまく30日までの月表示がうまくいきません。 こちらのアクセスのデータの問題かもしれませんが、日付データであることしかまだ確認ができていません。アクセスがわからないもので、申し訳ないです…。 せっかくここまで丁寧にお答えいただいたのにすぐに結果をご報告できなくて残念なのですが、またやりなおしてみたいと思います。 日があいてしまったままになりそうでしたので、先にお礼だけでもと思い返信させていただきました。 本当に何度もご確認・ご指導いただきありがとうございました。 大変助かりました。 感謝しています。

回答No.1

>データにある日付の一ヵ月後(9/30のデータなら10/31になるように) これって31日後という意味ですか? 2月だとか小の月や大の月の違いはどう表示させたいのですか? 月だけなら簡単ですが月日両方だとかなり面倒になります。 http://office.microsoft.com/ja-jp/word/HP051861861041.aspx?pid=CH061047281041 こちらの例をフィールドコードとして認識したいなら、半角中カッコ { } の部分は[ Ctrl+F9 ]キーで空白フィールドを挿入してからカッコ内の フィールドコードを書き込むか、コピー&ペーストして下さい。 手順 [ Ctrl+F9 ]キーで空白フィールドを挿入しQUOTEフィールドを挿入 { QUOTE } 再度[ Ctrl+F9 ]キーで空白フィールドを挿入しIFフィールドを挿入 { QUOTE { IF } } 同じような手順でカッコ内にフィールドの式を設定し[ F9 ]キーで更新 { QUOTE { IF { DATE \@ "M" } = 1 "12" " { = { DATE \@ "M" } -1 } " }/1/03 \@ "MMMM" }

canoko
質問者

お礼

早々のご解答ありがとうございます。 行いたい動きは 今あるデータyyyymmddをちょうど一ヵ月後のyyyymmddにして元号表記にしたいのですが難しいでしょうか。 例:20070930 → 平成19年10月31日 形式としては今月末→来月末になります。 「月」だけでなく「年」「月」「日」すべての表示を必要としています。 フィールドコードの反映には毎回「Ctrl+F9」が必要なのですね。 コピーすれば使えるものと勘違いしておりました。 ありがとうございます。 この例の { DATE \@ "M" } -1を { DATE \@ "M" } +1にするだけでは月が反映されるだけで年末や日付表示には応用できないのでしょうか・・・? わからないところばかりで申し訳ありません。 こうすればよいというコードや手順がありましたら教えて頂けると助かります。

関連するQ&A