以前の記事「【コード】西暦を和暦にする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







