今月は、フェロー・アカデミーさんのオンライン講座 を3回担当しました。
その受講生の方からの依頼で作ってみました。
その方の案件では、日付の表記が「3 February 2015」のように、日・月・年となっているようです。
この表記の日付を日本語表記に変えたいとのことでした。
ワイルドカード検索+Format関数 で対応します。
<目次>
このマクロでできること
英語の日付を日本語の日付にします。西暦のままです。
今回のマクロでは、日・月・年の順番で記載されたものを対象にしています。
3 February 2015 → 2015年2月3日
3 Feb. 2015 → 2015年2月3日
03 Feb. 2015 → 2015年2月3日
3 FEBRUARY 2015 → 2015年2月3日
03 FEB 2015 → 2015年2月3日
3 feb 2015 → 3 feb 2015 (こちらは、f が小文字なので変換しません)
記載の順序は、上記の通り、日月年 です。
月の名称が省略形の場合、ピリオドがあってもなくてもかまいません。
マクロの解説
「【コード】和暦を西暦にする(変更履歴オン版)」や「【コード】西暦を和暦にする(変更履歴オン版)」と同じように、変更履歴の記録機能がオンになっている場合にもマクロを実行できるようにしています。
西暦の検索には、ワイルドカードを用いて [0-9]{1,2} [JFMASOND][a-zA-Z.]{2,8} [0-9]{4} としています。2語目は月の名称です。1文字を大文字で指定しています。
もう少し細かく見てみます。
[0-9]{1,2} 1桁又は2桁の半角数字
[JFMASOND][a-zA-Z.]{2,8} 1文字目が大文字の半角アルファベットで2文字目以降は大文字か小文字の2~8文字の半角アルファベット。1文字目のアルファベットは月の名称に用いる8種類に指定しています。
[0-9]{4} 半角4桁数字
(月の名称と1文字目のアルファベット)
January, June, July
February
March, May
April, August
September
October
November
December
マクロ
Sub 英語の日付を日本語の日付にする() Dim blnShowRevisions As Boolean Dim myRange As Range With ActiveDocument '変更履歴の表示状態の設定 blnShowRevisions = .ShowRevisions '設定保存 .ShowRevisions = False '表示オフ End With '現在のカーソル位置の保存 Set myRange = Selection.Range 'カーソルを文書の先頭に移動 ActiveDocument.Range(0, 0).Select With Selection.Find .Text = "[0-9]{1,2} [JFMASOND][a-zA-Z.]{2,8} [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 Selection.Range.HighlightColorIndex = wdYellow '蛍光ペン Selection.Text = Format(Selection.Text, "yyyy年m月d日") Selection.Collapse direction:=wdCollapseEnd DoEvents Loop .Text = "" .MatchWildcards = False '設定を解除 End With '変更履歴の表示を元に戻す ActiveDocument.ShowRevisions = blnShowRevisions '最初のカーソル位置に戻す myRange.Select Set myRange = Nothing End Sub