みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Word差し込み印刷で日付を来月に変更したい

Word 2000でAccessから差込印刷を試みています。
データにある日付の一ヵ月後(9/30のデータなら10/31になるように)を、AccessのデータはそのままWord側で表示させたいのですがどのようにすればいいでしょうか。

http://office.microsoft.com/ja-jp/word/HP051861861041.aspx?pid=CH061047281041
2003ですがフィールドコードを使って先月分を表示しているようですが、この構文をそのままAlt+F9の状態で貼り付けても文字列としてしか認識されず、また先月を来月にするにはどこを触っていいのかもわかりません。
お手数ですがよろしくお願いいたします。

投稿日時 - 2007-08-09 18:03:20

QNo.3241652

困ってます

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

差し込んだ日付を、必ず来月の月末になるように表示させるのですね
質問された内容を表示させる基本的なフィールドコードを示します。
差し込みフィールドの名前が「日付」となっています。

{ 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桁の数字だけだとたぶん日付として認識しないと思います。

投稿日時 - 2007-08-10 09:53:33

お礼

大変丁寧な回答ありがとうございます。

Accessのデータは確認してみましたら、" ####/##/## "の形式になっていました。紛らわしい書き方をしてしまいもうしわけありません。

書いていただいたものをそのまま写して試してみましたが
30日の月がうまく反映されず30-9-2007のような反映になってしまうのですがこれはどうなおせばよいのでしょうか…。
2月の28日や29日はきちんと平成18年2月28日というような形式になるのですが…。

何度も重ねてお伺いしてもうしわけありません。
データの入れ方に何か問題があるようでしたらなおして確認いたしますので、お教えいただけるとたすかります。

投稿日時 - 2007-08-14 15:11:13

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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日」になる
と思います。

私はあるマクロを使用して、上記テキストの内容をフィールドコードに変換
して確認していますし、逆にうまく表示できているフィールドコードの内容
をテキスト化して回答文に載せているので、間違いはないとは思います。

もう一度{ }の数や( )の数、カンマなどを確認して作り直してみて下さい。

投稿日時 - 2007-08-14 18:07:22

お礼

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

本当に何度もご確認・ご指導いただきありがとうございました。
大変助かりました。
感謝しています。

投稿日時 - 2007-09-04 09:47:14

ANo.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" }

投稿日時 - 2007-08-09 18:44:09

お礼

早々のご解答ありがとうございます。

行いたい動きは
今あるデータyyyymmddをちょうど一ヵ月後のyyyymmddにして元号表記にしたいのですが難しいでしょうか。

例:20070930 → 平成19年10月31日
形式としては今月末→来月末になります。
「月」だけでなく「年」「月」「日」すべての表示を必要としています。


フィールドコードの反映には毎回「Ctrl+F9」が必要なのですね。
コピーすれば使えるものと勘違いしておりました。
ありがとうございます。
この例の { DATE \@ "M" } -1を { DATE \@ "M" } +1にするだけでは月が反映されるだけで年末や日付表示には応用できないのでしょうか・・・?
わからないところばかりで申し訳ありません。
こうすればよいというコードや手順がありましたら教えて頂けると助かります。

投稿日時 - 2007-08-09 22:45:04

あなたにオススメの質問