Word (一般機能)

Wordの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Word 2016)
自動で翌日(明日)の月日と曜日を表示させるには?
投稿日時: 18/05/09 10:38:03
投稿者: おしえて

挿入→日付と時刻→途中省略→
フィールドコードの入力で
TIME \@ "M/d(aaa)"まで
たどり着き
現在、自動で『5/9(水)』の
表示までできるようになりました。
この表示を明日の表示として、
『5/10(木)』と自動で表示させる
方法を教えてください。
 
ちなみに、TIME+1 \@ "M/d(aaa)"
では無理でした。
 
何卒、お願い致します。

回答
投稿日時: 18/06/03 19:34:43
投稿者: Green Tea

来月などの月単位だけを求めたり、来年などの年単位だけを求めるだけならフィールドコードの編集も楽なのですが、数日後の(年)月日の場合でのフィールドコードは複雑な計算方法が必要になります。
https://answers.microsoft.com/ja-jp/office/forum/office_2013_release-word/%C3%A3%E2%80%9A%C2%BB%C3%A3%C6%92%C2%AB%C3%A3%C6%92%E2%80%A2qa/c60ad0bd-af59-4de4-8858-59ca8a28ecde
上記の説明にある海外のリンク先はつながりませんので、書いてあるフィールドコードを参考に作成してください。
 
私なら、VBAを使って出すほうが簡単なので、マクロで用意した日付で対応しますね。
ブックマークを使う方法なので、割と簡単だと思います。
https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_word-mso_winother/word-%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89/e44ef4d5-698d-4476-b076-ca23c788afe4

投稿日時: 18/06/04 21:27:11
投稿者: おしえて

Green Tea様
早速に、丁寧な対応ありがとうございました。
やはり、エクセルみたいに簡単には、出来ないんですね。
ちょっと、私には難しすぎて、手動でやろうかなと思っています。
本当に、ありがとうございました。

回答
投稿日時: 18/06/10 05:15:59
投稿者: んなっと

フィールドコードにこだわるなら
  
{QUOTE {SET y {DATE \@ "YYYY"}}{SET m {DATE \@ "M"}}{SET d {DATE \@ "D"}}{IF {QUOTE {y}/{m}/{={d}+1} \@ "D"} = {={d}+1} "{y}/{m}/{={d}+1}" {IF {m} = 12 "{={y}+1}/1/1" "{y}/{={m}+1}/1"}} \@ "yyyy/M/d(aaa)"}
 
2016/2/28 の翌日は 2016/2/29(月)
2017/2/28 の翌日は 2017/3/1(水)
2016/12/31 の翌日は 2017/1/1(金)
となると思います。
  
ただし{ }は、Ctrl+F9同時押し[フィールド挿入]で作るものです。
気が遠くなりますよね。
そこで...一度だけマクロを使って、上のフィールドコードを楽に挿入するなら...
   
Sub FieldNextDay()
  Dim Rng As Range
  Dim St As Long, En As Long
  Dim r As Range
  Dim s As String
  Application.ScreenUpdating = False
  ActiveDocument.ActiveWindow.View.ShowFieldCodes = True
  Set Rng = Selection.Range
  Rng.Collapse wdCollapseStart
  Rng.Text = "{QUOTE {SET y {DATE \@ ""YYYY""}}{SET m {DATE \@ ""M""}}{SET d {DATE \@ ""D""}}{IF {QUOTE {y}/{m}/{={d}+1} \@ ""D""} = {={d}+1} ""{y}/{m}/{={d}+1}"" {IF {m} = 12 ""{={y}+1}/1/1"" ""{y}/{={m}+1}/1""}} \@ ""yyyy/M/d(aaa)""}"
  Rng.MoveEnd , 1
  St = InStr(1, Rng.Text, "{")
  Do While St > 0
    En = InStr(1, Rng.Text, "}")
    Set r = ActiveDocument.Range(Rng.Start + St - 1, Rng.Start + En)
    With r
      Do While Len(Replace(.Text, "{", "")) <> Len(Replace(.Text, "}", ""))
        En = InStr(En + 1, Rng.Text, "}")
        .SetRange .Start, Rng.Start + En
      Loop
      .Characters.First.Delete
      .Characters.Last.Delete
      s = .Text
      With ActiveDocument.Fields.Add(r)
        .Code.Text = s
      End With
    End With
    St = InStr(1, Rng.Text, "{")
  Loop
  ActiveDocument.ActiveWindow.View.ShowFieldCodes = False
  Rng.Fields.Update
  Application.ScreenUpdating = True
End Sub
   
以後は Ctrl+A[全選択]→F9キー[フィールド更新] で手動で更新していくだけです。マクロは不要です。

回答
投稿日時: 18/06/10 18:38:57
投稿者: i-brown

Officeのサポートページでも同じような内容に触れていましたので、ご参考までにURLを貼っておきます。
んなっとさんの回答通り、QUOTEを使っています。
 
https://support.office.com/ja-jp/article/%e3%83%95%e3%82%a3%e3%83%bc%e3%83%ab%e3%83%89-%e3%82%b3%e3%83%bc%e3%83%89-quote-%e3%83%95%e3%82%a3%e3%83%bc%e3%83%ab%e3%83%89-26f0d723-07a8-4076-9097-a71459f3d44c?ui=ja-JP&rs=ja-JP&ad=JP

トピックに返信