人事システムに登録する文字として、以前の会社ではヘボン式を指定していたのですが、手入力でヘボン式に変換しているとミスも起きます。

ということで、今回は自動でカタカナをヘボン式に変換できるサンプルコードです。

 

やりたいこと

カタカナを入力してヘボン式による変換でアルファベット表記にしたいというのがやりたいことです。

 

ヘボン式変換のVBAコード

早速VBAコードを記載します。標準モジュールに追加してユーザ定義関数として以下の数式を利用します。

=ConvertHebon(名前のカタカナ)

 

' ローマ字 あいうえお 2019-09-06
Option Explicit

Private Function ReplaceA(ByVal s As String, ByVal t1 As String, ByVal t2 As String) As String

    Dim u1() As String: u1 = Split(t1)
    Dim u2() As String: u2 = Split(t2)
    Dim i As Integer
    
    For i = 0 To UBound(u1)
        s = Replace(s, u1(i), u2(i))
    Next
    
    ReplaceA = s

End Function

' 全角カタカナを ローマ字(英語式)に 変換 する
Public Function ConvertHebon(ByVal s As String) As String
    Dim tempStr As String
    tempStr = s

    ' 拗音・特殊音
    s = ReplaceA(s, "キャ キュ キョ", "kya kyu kyo")
    s = ReplaceA(s, "シャ シュ ショ", "sha shu sho")
    s = ReplaceA(s, "チャ チュ チョ", "cha chu cho")
    s = ReplaceA(s, "ニャ ニュ ニョ", "nya nyu nyo")
    s = ReplaceA(s, "ヒャ ヒュ ヒョ", "hya hyu hyo")
    s = ReplaceA(s, "ミャ ミュ ミョ", "mya myu myo")
    s = ReplaceA(s, "リャ リュ リョ", "rya ryu ryo")
    s = ReplaceA(s, "ギャ ギュ ギョ", "gya gyu gyo")
    s = ReplaceA(s, "ジャ ジュ ジョ", "ja ju jo")
    s = ReplaceA(s, "ヂャ ヂュ ヂョ", "ja ju jo")
    s = ReplaceA(s, "ビャ ビュ ビョ", "bya byu byo")
    s = ReplaceA(s, "ピャ ピュ ピョ", "pya pyu pyo")
    
    ' 直音
    s = ReplaceA(s, "ア イ ウ エ オ", "a i u e o")
    s = ReplaceA(s, "カ キ ク ケ コ", "ka ki ku ke ko")
    s = ReplaceA(s, "サ シ ス セ ソ", "sa shi su se so")
    s = ReplaceA(s, "タ チ ツ テ ト", "ta chi tsu te to")
    s = ReplaceA(s, "ナ ニ ヌ ネ ノ", "na ni nu ne no")
    s = ReplaceA(s, "ハ ヒ フ ヘ ホ", "ha hi fu he ho")
    s = ReplaceA(s, "マ ミ ム メ モ", "ma mi mu me mo")
    s = ReplaceA(s, "ヤ ユ ヨ", "ya yu yo")
    s = ReplaceA(s, "ラ リ ル レ ロ", "ra ri ru re ro")
    s = ReplaceA(s, "ワ ヰ ヱ ヲ", "wa i e o")
    s = ReplaceA(s, "ガ ギ グ ゲ ゴ", "ga gi gu ge go")
    s = ReplaceA(s, "ザ ジ ズ ゼ ゾ", "za ji zu ze zo")
    s = ReplaceA(s, "ダ ヂ ヅ デ ド", "da ji zu de do")
    s = ReplaceA(s, "バ ビ ブ ベ ボ", "ba bi bu be bo")
    s = ReplaceA(s, "パ ピ プ ペ ポ", "pa pi pu pe po")
    
    ' 撥音
    s = Replace(s, "ン", "n")
    s = ReplaceA(s, "nb nm np", "mb mm mp")
    
    ' 促音
    s = ReplaceA(s, "ッk ッs ッt ッn ッh ッm ッy ッr ッw", "kk ss tt n hh mm yy rr ww")
    s = ReplaceA(s, "ッg ッz ッd ッb ッp", "gg zz dd bb pp")
    s = ReplaceA(s, "ッc ッf ッj", "tc ff jj")
    s = Replace(s, "ッ", "")
    
    ' 長音
    s = Replace(s, "iー", "ii")
    s = Replace(s, "ー", "")
    
    ' 長音
    s = ReplaceA(s, "uu ou", "u o")
    If Right(s, 2) = "oo" Then
        GoTo LastStep
    End If
    s = ReplaceA(s, "oo", "o")
    
LastStep:
    
    ConvertHebon = s

End Function

 

 

実際に設定してみる

1.標準モジュールを追加する

Alt + F11をクリックしてVBEを起動し、右クリックして標準モジュールを追加します。

 

2.前述のコードを貼り付ける

追加した標準モジュール(Module1)にて、前述のVBAのコードを貼り付けましょう。

 

3.シートにてユーザ定義関数として利用する

上記コードを追加すると、以下のようにユーザ定義関数として普通に数式として使えるようになります。

そのままEnterを押すと、以下のようにカタカナをヘボン式を介してアルファベット表記に変換することができます。

 

さいごに

このコードを利用して変換ミスのリスクを減らしてください!

 

ではまた!