- ベストアンサー
Excelの漢字からカナを出力する「Phonetic関数」について
テキストファイルに書き込まれた音楽の日本語タイトル(漢字・かな・カナ・英字の混ざるもの)を、Excelを使用し、自動的に半角カタカナに変換するマクロを使用しています。使用している関数は「SetPhonetic」を使用しています。 この関数で疑問があるのですが、変換する元のファイルはただのテキストファイルなのに、なぜ正しい読み方で変換されるのでしょうか? たとえば「小田和正」を「ショウダワショウ」と変換されても不思議はないのですが。。。 オンラインで入力された顧客名に自動的にふりがなをつけるシステムに応用したいと考えています。もしどなたかこの関数の仕組みをご存じの方がいらっしゃいましたら、教えてください!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そんな便利な関数があるのかと、検証してみたところ・・・ 変換される根拠は、IMEなのどの漢字変換システムを使い、変換を掛けているようです。 セルA1に書かれた漢字の振り仮名を表示させるには、 =+PHONETIC(A1) という関数を書きます。ここまではOKですね。 「おだかずまさ」は、ほぼ一発で「小田和正」になりますね。 このような単純な場合には、ふりがな変換も簡単のようです。 ためしに、「おおさかふ」を漢字変換して「大阪府」とした場合、当然、ふりがな変換も「オオサカフ」になりますね。 次に「だいさかふ」を単漢字変換を行って「大阪府」と入力しても、ふりがな変換後「オオサカフ」になりますね。 これはどんなことが言えるかと言うと、Windowsに持っている辞書を逆引きして、「大阪府」は何て読むの?と裏で問い合わせているようです。 例えば、「貴麗茶」という商品名があります。「きれいちゃ」と読みます。 一般には、このような言葉はありません。なので、ふりがな変換もおかしな状態になります。しかし、この言葉を辞書に登録をして、再度変換を掛けると、何事もないように、「きれいちゃ」と変換されます。 ということで、仕組みは、Windowsの辞書の逆引きをしているというだけです。 ですから、PCによって、辞書が異なると、変換のされかたも異なることになり、注意が必要です。
その他の回答 (1)
- k-family
- ベストアンサー率34% (180/523)
VBAでSetPhoneticは使ったことがありませんが、シートの方のPhoneticならわかります。 これはそのセルへ入力したときに使ったIMEへの入力を覚えているだけです。従いまして他のテキストからコピーしてくると変換されません。 それから#1でspice_piriさんが大阪府の例をあげていらっしゃいますが、私の環境ではダイサカフとなります(EXCEL2002+ATOK15)。ATOK特有の現象かもしれません。 私はご希望の利用には使えないと思いますし、過去にできると聞いたことがありません。が、ひょっとしたらVBAでMS-IMEを使えばできるのかもしれません、Rubelliteさんの環境でご確認ください。
お礼
IMEによって変換が異なるみたいですね~。 ただ、同じExcel2002+ATOK15の環境を使用しているのですが、大阪府の置換内容がk-familyさんと異なりました。私が試したのは 大阪府 京都府 長岡京市 山本山 で、置換結果は オオサカフ キョウトフ ナガオカキョウシ ヤマホンザン となりました。IMEの辞書設定によっても変わるのかもしれませんね。私の場合は、専門辞書の上位に「カタカナ英語辞書」「インターネット用語」などがあります。 もし人名の変換をできるだけ正しくするとしたら、もしかすると「人名辞書」を上位にもってくるといい結果が得られるかもしれませんね。 あと、私が大阪府在住で、住所の変換の中で「大阪府」と入力することが多く、ATOKの辞書学習機能で「おおさかふ」の入力結果の上位に「大阪府」がきているのも関係があるかもしれません。 置換結果が使用するPCや、使用する人によってがらっと変わってしまいそうですね。 MP3のTag情報が比較的正しく置換されるのは、一度MP3 Tagエディターに正しい入力をしているからかもしれませんね。 いや~、言語解釈は奥が深いですね~(>_<)
お礼
検証までしていただきまして、ありがとうございました!m(_ _)m ペコ 参考までに、実際にテキストファイルに出力されたMP3のTag情報を半角カナに置換するスクリプトを公開します。 ●使用するソフト ・SuperTagEditor(mp3のTag情報を整理するため) ・Excel ●手順 1.Tagエディターでcsvテキストに出力する 2.下記のマクロと式のかかれたExcelに出力されたcsvを貼り付ける 3.マクロを実行する ●Excel内部の式(A列を指定する場合) '置換したい列を出力先のセルに式で指定する =ASC(PHONETIC(A:A)) 複数の列がある場合、各列に対応する置換先の列に上記の式を入力しておく ●Excel内部のマクロ(A~D列を指定する場合) Sub AD列() '置換したいワークシートの範囲指定 Worksheets("list").Range("A:A,B:B,C:C,D:D").Select '漢字をIMEの辞書の逆引きでカナに置換する Selection.SetPhonetic End Sub という感じですね。MP3対応のカーオーディオで曲目やアーチスト名を表示させるのに、非常に便利ですよ~(^_^) CD一枚で120曲は入りますからね~