(追記: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