ポイント
- StrConv(string, vbWide) では半角英数記号も全角へ変換されてしまうため一工夫必要
- CreateObject(“VBScript.RegExp”) を使用して正規表現で半角カタカナを抽出する。
- 正規表現のヒット結果の集合と Replace 関数を用いて次の順番で処理する。
- 正規表現にヒットした部分をループし、
- ヒットした部分を全角へ変換した文字列を用意し、
- 変換対象文字列に対してヒットした部分を、全角変換後の文字列へ置換する。
VBA コード
Public Sub Test() Dim s As String: s = "あいうアイウABCABC!#$!#$。「」、・ー。「」、・ー" Debug.Print HanKanaToZen(s) End Sub ''' <summary> ''' 半角カタカナを全角カタカナへ変換します。 ''' 半角カタカナの 。「」、・ー は変換対象です。 ''' カタカナ以外の半角文字は変換対象外です。 ''' </summary> ''' <param name="v">文字列</param> ''' <returns>変換済み文字列</returns> Public Function HanKanaToZen(ByVal v As Variant) As String Dim regExp As Object: Set regExp = CreateObject("VBScript.RegExp") regExp.pattern = "[¥uFF61-¥uFF9F]+" ' 文字列全体を検索するように設定 regExp.Global = True ' 検索を実行 Dim matches As Object: Set matches = regExp.Execute(v) ' マッチした半角カタカナを全角変換した文字列へ引数を置換 Dim match As Object For Each match In matches v = Replace(v, match.Value, StrConv(match.Value, vbWide)) Next match HanKanaToZen = v End Function
結果
Test 関数の実行結果です。
あいうアイウABCABC!#$!#$。「」、・ー。「」、・ー
おわりに
実際には、エクセルシートの Range.Value に対して半角カタカナの全角への変換を行い、変換後の結果をシートへ反映する、といったように使いました♪
参考ページです。ありがとう存じます!
- 正規表現を利用して半角カナを全角に変換する(RegExpオブジェクト):Excel VBA|即効テクニック|Excel VBAを学ぶならmoug
半角カタカナの範囲を図示していたりと、とてもわかりやすかった! - 急募!!!エクセルで半角カタカナを全角に変換できますか?そのときに… – Yahoo!知恵袋
- Excelのワークシート関数で正規表現を使う – Qiita
- Regular Expression (RegExp) オブジェクト
- Office TANAKA – Excel VBA関数[Replace関数]
以上です。