【Word VBA】西暦を和暦にするWordマクロ(令和対応版)

2019年5月1日

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

関連記事

日本の新元号に関する Office の更新プログラム

-コード
-, ,