質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

2083閲覧

GetPhoneticを使用した、ふりがなの抽出

torisan

総合スコア678

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/11/28 06:55

EXCEL VBAで
文字列の読みを抽出しようとしています。

VBA

1Sub Macro1() 2 MsgBox yomi("光ファイバケーブル") 'ヒカリファイバケーブル 3 MsgBox yomi("同軸ケーブル") 'ドウジクケーブル 4 MsgBox yomi("STPケーブル") 'STPケーブル 5 MsgBox yomi("CPEVケーブル") 'CPEVケーブル 6 MsgBox yomi("UTPケーブル") 'UTPケーブル 7 MsgBox yomi("AEケーブル") 'AEケーブル 8 MsgBox yomi("USBケーブル") 'ウsbケーブル 9 MsgBox yomi("ETC") 'エTC 10End Sub 11 12Function yomi(txt As String) 13 yomi = Application.GetPhonetic(txt) '読みを再変換して出力(全角で出力される) 14End Function

上記 Macro1 を動かした時の結果は
プログラム右のコメントの通りです。

上6つは期待した通りの結果が出力されているのですが、
下2つについては、中途半端に
アルファベットがカタカナに変換されています。

こうなってしまう条件と回避方法を教えて頂ければと思います。
確認できたのは、『USB』と『ETC』ですが他にもあるかもしれません。

関係あるかわかりませんが、この現象が起こっているパソコンのIMEは
『Microsoft Office IME 2010』……らしいです。
(コントロールパネル→(表示方法:大きいアイコン)地域と言語→キーボードと言語 タブ→キーボードの変更(C) より確認)

また、複数のパソコンで動かすことが想定される為、
個々の設定が影響しない、解決方法だと嬉しいです。

以上、よろしければご教授願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

同じく『Microsoft Office IME 2010』の環境なので試してみました。
どうやらIMEの辞書から変換の優先度が高い順のような気がします。
最初は正確に「USBケーブル」と出力されていましたが、「USBケーブル」というのをわざと「うsbケーブル」のように変換させていたら、いつの間にかそれが出るようになりました。
なので、そのように誤変換されているPCは、そのPCを使っている人がそのように誤変換をしてしまった過去があるのではと思います。

結論としては、GetPhonetic関数だけでは複数変換候補がある場合、どれを選択するかは機械では判断できないので、正確な変換は無理です。
ある程度語彙が決まっているのであれば、シートか何かに変換表でも作ってそれに従って変換させた方が確実です。
もしくは手修正を前提とした一次変換として使うのであれば有用です。

投稿2017/11/28 07:48

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

torisan

2017/11/28 08:22

>そのPCを使っている人がそのように誤変換をしてしまった過去があるのではと思います。 はい、言われてみればそのような覚えがあります。 語彙については数が多すぎる為、 ある程度の指標として使用する事とします。 回答ありがとうございました。
guest

0

ふりがなは、文字入力時の情報をExcelが記憶していることによって取得しています。
そのため、コピー&ペーストを行うなど、入力方法によっては正確に取得することができません。

私の環境では質問に記載の"ウsb"等を再現できてはいませんが、上記のような理由により発生しているものと推測します。

対応としては、ライブラリを探されるか、外部APIを使用するなどが考えられるかと思います。
外部APIの例としては、下記があります。

テキスト解析:ルビ振り - Yahoo!デベロッパーネットワーク
https://developer.yahoo.co.jp/webapi/jlp/furigana/v1/furigana.html

投稿2017/11/28 07:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2017/11/28 08:25

Excelが記憶しているふりがなを取得するのはワークシート関数のPHONETIC関数ではないでしょうか。 アプリケーション関数のGetPhoneticはIMEから持ってくるようですよ。
torisan

2017/11/28 08:26

再現できずという事は個別の環境で間違いなさそうですね……。 外部APIについては、そこまで大きなプログラムではない事と、 変換後にもメンテ画面がある事などから見送る事としました。 回答ありがとうございました。
退会済みユーザー

退会済みユーザー

2017/11/28 12:01

Application.GetPhoneticはIMEの情報を参照するのですね。 把握できていなかったので、勉強になりました。 回答として適当ではなかったようで失礼いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問