例えば、EXCELのセルに「石器」があり
http://dictionary.goo.ne.jp/srch/all/石器/m0u/
このURLに飛ばすと、そこに石器のふりがな(せっき)があり、
その(せっき)のふりがなの部分だけを取り出すことはできますか?
EXCELのセルには、任意に複数の日本語が書いてあり、クエリで一括で日本語の
よみがなを取り出したいです。是非いい方法あれば教えてください。
PHONETIC 関数を使うのがお手軽だと思います。
# クエリじゃないですけれど。
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
PHONETIC 関数を使うのがお手軽だと思います。
# クエリじゃないですけれど。
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 に怒られそうだ :-)
マクロを使う方法ですね、挑戦してみます。ありがとうございます!
クエリじゃないですが、↓この機能で
「WEBSERVICE」「ENCODEURL」「FILTERXML」の3つの関数が追加され、これらの関数を使うと、Webサービス、つまり公開されているWeb APIをVBAでコードを書くことなく利用できるようになります。
Excel 2013で追加された「WEBSERVICE」関数を使って、マクロを使わずWeb APIを利用する。 | 初心者備忘録
↓このAPIを叩いたら
漢字かな交じり文に、ひらがなとローマ字のふりがな(ルビ)を付けます。
テキスト解析:ルビ振り - Yahoo!デベロッパーネットワーク
それっぽいことができそうな気がします。
もし任意のWebページを使いたいなら、kimonoにチャレンジしてみてはいかがでしょう。
kimonoはウェブページをスクレイピングしてAPI化してくれるサービスです。しかもめっちゃ簡単に。
api - kimonoでお手軽スクレイピング - Qiita
でも、どれも私は使ったことないんですけどね←
ありがとうございます とても興味のある内容です。
これからじっくり読んで挑戦してみたいと思います。
これは、いろいろなことに使えそうです!
間を取るとアクセスできるようになるので、セルの関数として使うのではなく、マクロでループさせて使う感じでしょうか。
2015/10/07 20:43:44読みが取得できているのは飛ばすようにして、無駄なアクセスをしないようにして。
# 突き詰めすぎると goo に怒られそうだ :-)
マクロを使う方法ですね、挑戦してみます。ありがとうございます!
2015/10/07 21:33:46