以前の記事「【コード】西暦を和暦にするWordマクロ(変更履歴オン版)」を新元号の「令和」にも対応するように作りかえました。
<目次>
このマクロでできること
様々な表記の英語の日付を和暦に変換して蛍光ペンの黄色で着色します。
(処理前)
(処理後)
マクロの解説
基本的な考え方は「【コード】西暦を和暦にするWordマクロ(変更履歴オン版)」と同じですが、2019年5月1日以降を令和にしました。
いずれ、Format関数で令和と表示されるようになると思うのですが、暫定処置として作ってみました。
現時点では、Format関数で令和が始まる2019年5月1日が平成31年5月1日と表示されます。なので、もしも平成31年5月以降に平成という表示になっている場合に令和に変換するようにしてみました(36行目~44行目)。
マクロ
Sub 西暦を和暦にする4() Dim blnShowRevisions As Boolean Dim myDoc As Document Dim myRange As Range Dim myDate As String Dim myYear As Integer Dim Pos_Start As Integer Set myDoc = ActiveDocument With myDoc '変更履歴の表示状態の設定 blnShowRevisions = .ShowRevisions '設定保存 .ShowRevisions = False '表示オフ End With Set myRange = myDoc.Range(0, 0) With myRange.Find .Text = "[JFMASOND][a-zA-Z.]{1,} [0-9]{1,2}, [0-9]{4}" .Forward = True .Format = False .Wrap = wdFindStop .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True Do While .Execute = True With myRange .HighlightColorIndex = wdYellow '蛍光ペン myDate = Format(.Text, "ggge年m月d日") If Left(myDate, 2) = "平成" Then Pos_Start = InStr(1, myDate, "年") myYear = Mid(myDate, 3, Pos_Start - 3) If (myYear = 31 And Month(myDate) >= 5) Or _ myYear >= 32 Then myYear = myYear - 30 myDate = "令和" & myYear & Mid(myDate, Pos_Start) End If End If .Text = myDate .Collapse direction:=wdCollapseEnd DoEvents End With Loop End With '変更履歴の表示を元に戻す myDoc.ShowRevisions = blnShowRevisions '------------------------------------------- '後処理 '------------------------------------------- Set myRange = Nothing Set myDoc = Nothing End Sub