Word 2013以降で新元号に対応するにはかっこ悪いけど日付CCでdocx形式で保存しよう


Docx形式でWordの文書を保存する理由

日付選択コンテンツコンツロールがdoc形式では使えないため。
word2010でも使えますが境界色を設定しない方がよいかもしれません。
補足:またDocx形式でも互換モードの時は使えません。互換モードを解除する必要があります。互換モードは日付選択コンテンツコントロール(以下、「日付CC」と略す。)のほかWord 2010・2013でオブジェクトの選択と表示がグレーアウトして選択できないなど制約がある。解除方法はこちらを参照すること。新拡張子なのに互換モードと表示される

新元号に対応する方法

Word2016は新元号に対応する準備がされている。
このため、日付を日付CCで入力し、docxもしくはdocmで保存する(互換モードではないこと)。
このようにしておくとWordの更新で新しい元号に自動的に設定される。
Word2013は更新されるか不明だが、いざというときは西暦4桁表示に変換できる。

手動で挿入

よねさんのword&Excel講座 Word2010 日付選択コンテントコントロールの使い方
開発タブを表示する必要がある。
またWord2013で微妙に改善されている。Word におけるコンテンツ コントロール
Word 2013 におけるコンテンツ コントロールの改善
Word 2013 では、コンテンツ コントロールに 3 つの主要な改善が加えられました。すなわち、視覚化の改善、リッチ テキスト コンテンツ コントロールの XML マッピングのサポート、新しい繰り返しコンテンツ用のコンテンツ コントロールです。
視覚化の改善
Word 2013 では、次の 3 つのうちのいずれかの状態で個々のコンテンツ コントロールを表示できます。
境界ボックス
開始/終了タグ
なし
そして境界ボックスの時、Word2013以降はフォーカスがない限り視覚化されなくなった。

VBA

とりあえずInputBoxで今日の日付を登録できるようにした。
Tagは編集中は見えないが、和暦の表示形式を示している。
これは西暦表示に変換するときに検索で使用できる

Sub InsertDateCC()
'For Word 2013 Later

'For Word 2013 Later

Dim wDoc As Word.Document: Set wDoc = ThisDocument
Dim wRng As Word.Range
Dim wdContentCtrl As ContentControl
Dim DT As Date
Dim buf As String

On Error GoTo Terminator
buf = InputBox("日付を入力してください", "日付挿入", Date)
If IsDate(buf) = False Then GoTo Terminator
DT = CDate(buf)
Set wRng = Selection.Range
Set wdContentCtrl = wRng.ContentControls.Add(wdContentControlDate) '[WdContentControlType 列挙 (Word)](https://msdn.microsoft.com/ja-jp/vba/word-vba/articles/wdcontentcontroltype-enumeration-word)
'Const wdContentControlDate = 6
With wdContentCtrl
'.PlaceholderText = DT
 .Tag = "CC_Date_Jpn_ggge_m_d_aaa" 'Titleと違い、編集中は表示されないが、Wordに格納されている。
 .Color = wdColorAqua '境界色
 .MultiLine = True '複数行が可能。ただしテキストとリッチテキストにしか有効ではない
 .Title = "Date" & Format(DT, "yyyymmdd") 'ここの月は小文字でよい
 .Range.Text = DT
 '.DateCalendarType = wdCalendarWestern 'グレゴリオ暦 0 [WdCalendarType 列挙 (Word)](https://msdn.microsoft.com/ja-jp/vba/word-vba/articles/wdcalendartype-enumeration-word?f=255&MSPPError=-2147217396)
 .DateDisplayFormat = "ggge年M月d日(aaa)"
 .LockContentControl = False 'True:delete Unable コンテンツコントロール削除不可
 .LockContents = False 'True : Modify contents value unable 値変更不可
End With
Exit Sub
Terminator:
MsgBox buf & "は日付と解釈できません"
End Sub

和暦から西暦(yyyy/M/d)

wdoc.contentcontrolsで集合になっているので、Tagで絞り込むか表示形式で絞り込んで表示形式を変更する


Sub TranspherDateCC_JpnFormatToyyyyMMdd()
'For Word 2013 Later
Dim wDoc As Word.Document: Set wDoc = ThisDocument
Dim wRng As Word.Range
Dim wdCC As ContentControl, wdCCs As ContentControls
Dim DT As Date
Dim buf As String
Set wdCCs = wDoc.ContentControls
For Each wdCC In wdCCs
If wdCC.DateDisplayFormat = "ggge年M月d日(aaa)" Then ’ここの月は大文字のM
'If wdCC.DateDisplayFormat = "ggge年M月d日(aaa)" And wdCC.Tag = "CC_Date_Jpn_ggge_m_d_aaa" Then
'タイトルやTagをつけておくと、変更するべき日付CCを絞り込むことができる。
wdCC.DateDisplayFormat = "yyyy/MM/dd"
wdCC.Tag = ""
wdCC.Tag = "DateyyyyMMdd"
End If
Next wdCC
End Sub

西暦から和暦曜日付き

Sub TranspherDateCC_yyyyMMddtoJpnDateFmtgggeMdaaa()
Dim wDoc As Word.Document: Set wDoc = ThisDocument
Dim wRng As Word.Range
Dim wdCC As ContentControl, wdCCs As ContentControls
Dim DT As Date
Dim buf As String
Set wdCCs = wDoc.ContentControls
For Each wdCC In wdCCs
If wdCC.DateDisplayFormat = "yyyy/MM/dd" Then
wdCC.DateDisplayFormat = "ggge年M月d日(aaa)"
wdCC.Tag = ""
wdCC.Tag = "CC_Date_Jpn_ggge_m_d_aaa"
End If
Next wdCC
End Sub

Word2016は新元号対応準備中(かっこ悪いけど)

日付コンテンツコンツロールで日付の表示形式をggge年M月d日で、日付を2019年5月1日以降にすると??1年M月d日と表示されます。

上記のマクロはアドインかNormalのテンプレートに

アドインをお勧めします。
保存するファイルはDocx形式になりマクロがつきません。
この日付CCはマクロではないし、フォームでもないのです。