最近、仕事でVBAをいじってみて、その便利さと面白さに気づきました。ひらがなとカタカナの変換とか、半角と全角の変換とか……。
それはともかく、今回はエクセルのVBAを用いて、自動的に指定のふりがなを振る方法について。
例えば下記のように、A列に苗字と名前を全角スペースで分けた漢字で書いた名前があり、B列にA列の名前のふりがながあるとします(こちらも苗字と下の名前は全角スペースで分けてある)
名前参考サイト:
・同姓同名探しと名前ランキング | 姓名、名前、名字、苗字の分布と由来
・赤ちゃん名付け実績No.1/無料 赤ちゃん名づけ|キラキラネームランキング
この時、A列の漢字での名前のほうに、B列のふりがなを振っていくにはどうすればいいか。
その前にエクセルには自動でふりがなを振ってくれる機能があるのでやってみました。
最初のほうは一致してますが、最後のほうはダメでした。
というわけで、ふりがなを自動的に振っていく方法を調べてみると、PhoneticCharactersというプロパティに指定のふりがなを代入すると、ふりがながセットされることが分かりました。
以下、実装したコード(プロシージャ名が日本語になってます。初めて見た時は慣れませんでした)。
Sub ふりがなを振る() Dim kanjiName As Variant Dim kanaName As Variant Dim lastRow As Integer Dim kanjiLen As Integer Dim kanaLen As Integer 'A列の最後の行を取得 '参考:http://www.start-macro.com/55/w/s029.html lastRow = Cells(Rows.Count, "A").End(xlUp).Row For Index = 1 To lastRow kanjiName = Split(Cells(Index, 1), " ") ' 漢字の名前を全角スペースを区切り文字として分ける kanaName = Split(Cells(Index, 2), " ") ' ふりがなの名前を全角スペースを区切り文字として分ける kanjiLen = Len(Cells(Index, 1).Value) kanaLen = Len(Cells(Index, 2).Value) ' 苗字にふりがなを振る Cells(Index, 1).Characters(1, Len(kanjiName(0))).PhoneticCharacters = kanaName(0) ' 下の名前にふりがなを振る Cells(Index, 1).Characters(kanjiLen - Len(kanjiName(1)) + 1, Len(kanjiName(1))).PhoneticCharacters = kanaName(1) ' ふりがな表示 Cells(Index, 1).Phonetics.Visible = True Next End Sub
以下、おまけ。
VBAで特定のセルにセットされているふりがなを取得したいことがあると思います。調べてみると、Application.GetPhoneticというメソッドを使うと取得できると分かり、A10セルをアクティブにした後、下記のスクリプトを実行してみました(参考:VBAでふりがなを取得する方法)。
Sub ふりがな取得() MsgBox (Application.GetPhonetic(ActiveCell)) End Sub
なんと、セットしたふりがなではなく、最初に自動で割り振られたふりがなの値を取得しました。VBAでセルにセットしたふりがなを取得したい場合は、Application.WorksheetFunction.Phoneticを利用しなければいけないようです。
Sub ふりがな取得() MsgBox (Application.WorksheetFunction.Phonetic(ActiveCell)) End Sub
ところで、ふりがなって日本以外の国でもあるのだろうか? 英語版のWikipedia(Furigana – Wikipedia, the free encyclopedia)を見ると、日本独特の文字っぽいけど。HTML5にrubyタグ追加されたけど、日本語以外のサイトでは使われてないのだろうか?
コメント