t-hom’s diary

主にVBAネタを扱っているブログです。

VBA ブラウザを起動せずにWeblioから検索結果を取得する

昔作ったコードが出てきたので投稿。

メール等の文章を書いていて今ひとつしっくり来ないことがある。
そんなときはWeblio類義語辞典で違う表現を探してみよう。

とはいえ、ページを開くのは面倒くさいので、マクロでサクッと調べられないかということで作ったのが以下のコード。標準モジュールに貼り付けてtestを実行すると、Weblioの類義語から"難しい"に対応する類義語を引っ張ってくる。単にURLを変えれば和英辞典も使える。
WordやOutlookVBAでも問題無く動作するので、使いようによっては役に立つかもしれない。

ただし取得したデータはhtmlソースそのままなので、実用的に使用するには正規表現などで加工する必要がある。

Option Explicit

'テストコード
Sub test()
    MsgBox GetHTML("難しい")
End Sub


'これがメインのhtml取得処理
Function GetHTML(str As String) As String
    Dim EncodedKeyword As String
    EncodedKeyword = urlEncode(str)
    Dim xmlHttp
    Set xmlHttp = CreateObject("Msxml2.XMLHTTP")
    xmlHttp.Open "GET", "http://thesaurus.weblio.jp/content/" & EncodedKeyword, False
    xmlHttp.send
    Dim html As String
    html = xmlHttp.responseText
    Set xmlHttp = Nothing
    GetHTML = html
End Function


'これは2バイト文字をパーセントエンコーディングする関数
Function urlEncode(str As String) As String
    Dim sc, js As Object
    Set sc = CreateObject("ScriptControl")
    sc.Language = "Jscript"
    Set js = sc.CodeObject
    urlEncode = js.encodeURIComponent(str)
End Function

参考にしたのは確か、こちらのページ。(うろ覚えで申し訳ない)
VBAでWebページを取得する方法
http://komet163.blog36.fc2.com/blog-entry-18.html

※ScriptControlが64ビットOSで動かないという情報もあったので、64ビットの方は別途調べてください。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。