人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCELのクエリを使って、漢字のよみを取り出したいのですが、
例えば、EXCELのセルに「石器」があり
http://dictionary.goo.ne.jp/srch/all/石器/m0u/
このURLに飛ばすと、そこに石器のふりがな(せっき)があり、
その(せっき)のふりがなの部分だけを取り出すことはできますか?
EXCELのセルには、任意に複数の日本語が書いてあり、クエリで一括で日本語の
よみがなを取り出したいです。是非いい方法あれば教えてください。

●質問者: kajironpu
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
ベストアンサー

PHONETIC 関数を使うのがお手軽だと思います。
f:id:a-kuma3:20151006150349p:image

# クエリじゃないですけれど。




追記です。
VBA を使ったサンプルを作ってみました。
「漢字の読みを調べる」関数が、goo辞書のページの最初の「読み」を返します。

Function 漢字の読みを調べる(元ネタ)

 Set xhr = CreateObject("MSXML2.ServerXMLHTTP")
 Set doc = CreateObject("htmlfile")

 URL = "http://dictionary.goo.ne.jp/srch/all/" & 元ネタ & "/m0u/"

 xhr.Open "GET", URL, False
 xhr.send ""
 If xhr.StatusText = "OK" Then
 
 doc.write xhr.responseText
 Set nodeList = doc.getElementsByTagName("DT")
 読み = "×"
 For i = 0 To nodeList.Length - 1
 If nodeList(i).className = "title search-ttl-a" Then
 s = nodeList(i).innerHTML
 iPos = InStr(s, "【")
 If iPos <> 0 Then
 読み = Left(s, iPos - 1)
 End If
 Exit For
 End If
 Next
 漢字の読みを調べる = 読み

 Else
 漢字の読みを調べる = "×"
 End If

 Set doc = Nothing
 Set xhr = Nothing

End Function

'
' ここから後は、テスト用
'
Sub テストサブ(kanji)
 yomi = 漢字の読みを調べる(kanji)
 Debug.Print yomi
End Sub

Sub テスト()
 Call テストサブ("石器")
 Call テストサブ("磨製石器")
 Call テストサブ("那智黒")
 Call テストサブ("那智赤")
End Sub



追記です。
ループの件数が間違ってたのと、goo辞書で読みが見つからなかったときの処理がきちんとしてなかったので、先の追記のソースを修正しました。


kajironpuさんのコメント
ありがとうございます。 PHONETIC関数だと間違いが多くて、、、、、、 難しい用語だと、読み方があやしいです。例)磨製石器 ネットの辞書だと完璧なんですが、 そこからデータを持ってくることは出来ないでしょうか?

a-kuma3さんのコメント
あー、なるほど。 じゃあ、VBA 使うしかないですね。 クエリじゃ、ちょっと厳しい。

a-kuma3さんのコメント
回答に追記しました。

kajironpuさんのコメント
a-kuma3 さん、さっそくありがとうございます。 とてもスゴイ機能で驚いています。 =漢字の読みを調べる(セル) とやると 見事に専門用語のふりがなが表示されます。 こんなこともできるんですね。(

kajironpuさんのコメント
その後、いろいろやっていたら オブジェクト変数またはWithブロック変数が設定されていません。」というエラーが出るように なってしまいました。 原因はわかりますでしょか?

a-kuma3さんのコメント
んー、その「いろいろやった」内容が分からないと何とも。 一度、マクロを全部消して、回答に追記したコードを貼りなおしてもエラーは出るでしょうか。 あと、Set xxx = CreateObject("...") と、Set xxx = Nothing はペアです。 いじってるなかで途中で止まって、処理を中断して、またやり直し、ということを続けていると Set xxx = Nothing が行われなくてメモリリークします。 このたぐいは、一旦、Excel を完全に終了させてから、もう一度 Excel を起動しなおすと直ります。

kajironpuさんのコメント
ありがとうございます。 EXCEL再起動でもだめで、PCを再起動してもだめでした。 一気に、たくさんの単語を変換したためか、EXCELが固まってしまい、その後おかしくなった感じです。 エラーが出てから、だいぶ時間が立ったのにもかかわらず、PC再起動でも同じエラーでした。 A1セルに漢字を入れておいて、 A2セルに=漢字の読みを調べる(A1) という関数を入れてから マクロを走らせるという使い方はあっていますでしょうか? 念のため、エラーがでたマクロの画像を補足の方に添付致します。

kajironpuさんのコメント
すみません、画像の添付方法がわからないため、 URLを追記致します。 http://upup.bz/j/my58263TxxYtNWmi3qZsdQQ.jpg http://upup.bz/j/my58264KMhYtvDmagayJRbU.jpg

a-kuma3さんのコメント
>> A1セルに漢字を入れておいて、 A2セルに=漢字の読みを調べる(A1) という関数を入れてから マクロを走らせるという使い方はあっていますでしょうか? << 使い方はお好きに、と思ってました。 数が多いなら、セルに関数として指定するよりも、VBA で行方向にループを回した方が良いかも。 一度、読みを取得したデータは、撮りなおす必要がないですし。 goo辞書に載っていない単語があるんじゃないかと思います。

a-kuma3さんのコメント
入れ違いになりました。 「那智黒」が変換できないんですねえ。 後で、確認してみます。 # ループの条件、間違ってるし <tt>X-|</tt>

a-kuma3さんのコメント
確認しました。 「那智黒」は読みを取得できたのですが、読みが取得できないときの処理が甘かったので、ソースを修正しました。

kajironpuさんのコメント
さっそくありがとうございます。新しく作成して頂いたマクロを使ってみました。セルに関数として、=漢字の読みを調べる(A1) というふうにコピーして、最初10個くらいの単語を連続で変換したらうまくいきました。しかし、100個くらいを連続で変換したら、全部「X」になってしまいます。その後なぜか、まったく変換ができず、EXCEL再起動、あるいは新しいワークに最初からマクロを入れなおしても、まったく変換できません。すべて「X」になってしまいます。とても不思議な現象です。

a-kuma3さんのコメント
やってみました。 連続でガンガンアクセスすると、「アクセスが禁止されてます」というページになるみたいです。 プログラムでデータを抜くと、たとえばサイトの複製みたいなことができちゃうので、連続したアクセスを判定してエラーになるようにしているみたいです。

kajironpuさんのコメント
なるほど、それが原因なんですね、、 だとすると単語数が多い場合、難しそうですね。

a-kuma3さんのコメント
間を取るとアクセスできるようになるので、セルの関数として使うのではなく、マクロでループさせて使う感じでしょうか。 読みが取得できているのは飛ばすようにして、無駄なアクセスをしないようにして。 # 突き詰めすぎると goo に怒られそうだ <tt>:-)</tt>

kajironpuさんのコメント
マクロを使う方法ですね、挑戦してみます。ありがとうございます!

2 ● Lhankor_Mhy

クエリじゃないですが、↓この機能で

「WEBSERVICE」「ENCODEURL」「FILTERXML」の3つの関数が追加され、これらの関数を使うと、Webサービス、つまり公開されているWeb APIをVBAでコードを書くことなく利用できるようになります。

Excel 2013で追加された「WEBSERVICE」関数を使って、マクロを使わずWeb APIを利用する。 | 初心者備忘録

↓このAPIを叩いたら

漢字かな交じり文に、ひらがなとローマ字のふりがな(ルビ)を付けます。

テキスト解析:ルビ振り - Yahoo!デベロッパーネットワーク

それっぽいことができそうな気がします。

もし任意のWebページを使いたいなら、kimonoにチャレンジしてみてはいかがでしょう。

kimonoはウェブページをスクレイピングしてAPI化してくれるサービスです。しかもめっちゃ簡単に。

api - kimonoでお手軽スクレイピング - Qiita




でも、どれも私は使ったことないんですけどね←


kajironpuさんのコメント
ありがとうございます とても興味のある内容です。 これからじっくり読んで挑戦してみたいと思います。 これは、いろいろなことに使えそうです!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ