【Word VBA】西暦を和暦にするWordマクロ

2011年9月17日

先日、お客様から翻訳後の西暦と和暦の一致を確認する方法はないのかとご質問をいただきまして、調べてみました。

西暦を和暦の記載に変換する方法はいくつかあるようです。ネット上でも同様の質問がありますね。

今回ご紹介する方法は、Format関数を用いて文書中の西暦(4桁数字)を和暦に置き換えるマクロです。

英文和訳の場合、原文となる英文中の4桁数字を全て和暦に変換して、翻訳文と見比べる、という場合を想定しています。

このマクロを使うと、

変換結果

となります。

このマクロでできること

Word文書中の任意の4桁数字を探して、その部分を和暦に変換し黄色の蛍光ペンで着色します。

変換可能な和暦は、明治、大正、昭和、平成の4種類です。それ以前の場合には変換されません。

カレンダーとして用いられる4桁数字以外にも、数値としての4桁数字も変換しうるのでご注意ください。その点は、区別せずに変換します。

また、Word文書の一番先頭に4桁の数字が記載されている場合には識別できませんので、その点もご注意下さい。

あくまでも、チェック用として使うことを意図したマクロですのでご注意ください。

マクロの解説

Format関数を用いています。

Format関数では、日付型データを別の表示形式に変換できます。

4桁数字を日付型データとして認識できるように、「/01/01」を追記しました。

なお、大正元年(1912年)、昭和元年(1926年)、平成元年(1989年)は、それ以前の元号と重複していますので注意が必要です。

ですから、それらの年号は別の蛍光ペンで色で着色をして注意をひくように工夫してもいいかもしれません。

なお、後日書いた西暦を和暦にするWordマクロ(その2) で、ワイルドカードを工夫して少し使い勝手がよくなりました。あわせてご覧下さい。

マクロ


Sub 西暦を和暦に変換()
  Dim myRange As Range

  Set myRange = ActiveDocument.Range(0, 0)

  With myRange.Find
    .Text = "[!0-90-9][0-90-9]{4}[!0-90-9]"
    .Forward = True
    .Wrap = wdFindStop
    .MatchWildcards = True
  End With

  Do While myRange.Find.Execute = True
   With myRange
    .End = .End - 1
    .Start = .Start + 1
    .HighlightColorIndex = wdYellow
    .Text = Format(.Text & "/01/01", "ggge年")
    .Collapse direction:=wdCollapseEnd
   End With
  Loop

End Sub

関連記事

-コード
-, ,