人事システムに登録する文字として、以前の会社ではヘボン式を指定していたのですが、手入力でヘボン式に変換しているとミスも起きます。
ということで、今回は自動でカタカナをヘボン式に変換できるサンプルコードです。
やりたいこと
カタカナを入力してヘボン式による変換でアルファベット表記にしたいというのがやりたいことです。
ヘボン式変換の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を押すと、以下のようにカタカナをヘボン式を介してアルファベット表記に変換することができます。
さいごに
このコードを利用して変換ミスのリスクを減らしてください!
ではまた!
業務でどうしても氏名をヘボン式に変換したくて探していたところ、こちらのサイトを発見しました。
早速、プログラムを入力して関数をしようしましたが、VALUEとなってしまいます。
何度もプログラムに誤りがないか確認しましたが、原因がわかりません。
VBA初心者のため、今一度確認すべき事項があればご教授いただけないでしょうか。
keiです。入力されようとしている内容次第かなと思います。
メール差し上げますので、対象のファイルをご提供ください。
コメントへの対応ありがとうございます。
ファイル添付できれば良いのですが、業務用のパソコンからデータを抜くことは禁止されておりまして…
とりあえずやったことは、掲載されているプログラムを標準モジュールに入力し、サイトと同様に動作確認をしたのですが、エラーになってしまいます。
プログラムに誤りがないかも確認したのですが、問題はありません。
他に、確認すべきことはあるでしょうか?
とても参考になりました。
業務で使用するために活用してみます。
ただ捨て仮名が変換されないので、「ァ」「ィ」「ゥ」「ェ」「ォ」等の変換式を加筆する必要がありそうです。
こんにちは。Keiです。
ヘボン式ローマ字にはあいうえおの捨て仮名は存在しないと思っていたのですが。。
https://www.akig-hyo.com/jitai-hebon.htm?psafe_param=1&gclid=CjwKCAjw44mlBhAQEiwAqP3eVkZIKPXos-rs1zRWvIRDjLnZgKgHkFgxJavFeFNb9R2ZrUJYBzQIrRoCVe8QAvD_BwE
勉強不足で恐縮です。参考ページを教えていただけますでしょうか?
VBAコードも修正します!!