【コード】和暦を西暦にする(その2)

(追記:2015/01/26)

変更履歴をオンにした場合でも正常に動作するマクロを作りました。以下の記事をご覧ください。

【コード】和暦を西暦にする(変更履歴オン版)

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

以前紹介したマクロですが、もっとしっかり和暦を西暦に変換するマクロです。

前回のマクロ「【コード】和暦を西暦にするマクロ」では、年号だけを処理対象にしておりました。

今回のマクロでは日付まで処理します。

このマクロでできること

明治から平成までの和暦を西暦に変換します。

例えばこんな感じです。

昭和64年1月8日は存在しませんが、計算できます。

元年の記載は処理対象外です。

検索した部分は黄色の蛍光ペンで着色します。

(マクロ実行前)

処理前

(マクロ実行後)

処理後

マクロの解説

ワイルドカードで和暦の日付を検索しています。この方法については、前回紹介したマクロと同じです。

和暦の日付が見つかったら、あとはそれを西暦に変換するだけです。

Format関数を用いています。

今回は、書式を “mmmm d, yyyy” としていますので、アルファベットで月の名称を表示します。

書式を、“yyyy/mm/dd” としたら、1989/01/07 のような表示になります。

インターネットで検索すれば、このあたりの表示形式は例が出ていると思います。

私は、できる大事典 Excel VBA で調べています。一覧が載っているので便利です。

マクロ


Sub 和暦を西暦に変換2()

 Dim myRange As Range

 Set myRange = ActiveDocument.Range(0, 0)
 
 With myRange.Find
  .Text = "[明大昭平][治正和成][0-90-9元]{1,2}年[0-90-9]{1,2}月[0-90-9]{1,2}日"
  .Forward = True
  .Wrap = wdFindStop
  .MatchWildcards = True
 End With

 Do While myRange.Find.Execute = True
  myRange.HighlightColorIndex = wdYellow
  myRange.Text = Format(myRange.Text, "mmmm d, yyyy")
  myRange.Collapse direction:=wdCollapseEnd
 Loop

 Set myRange = Nothing
 
End Sub

トップへ戻る