Webクエリを用いて、Google, Yahooの任意の検索結果の反映を確認する目的となります。
ここでの任意とは検索キーワードとなり、この値はセル上にパラメータとして定義しております。
以下、作成したクエリとなります。
Googleはうまくいくのですが、Yahooはクエリが実行される際に文字化けを起こしてしまい、うまくいきません。
http://search.yahoo.co.jp/search/?p=["Yahoo", "Search Query"]
http://www.google.co.jp/search?q=["Google", "Search Query"]
添付画像はパラメータに実際の値が入った例ですが、
Yahooは表示されているような文字化けがおこります。
もし解決方法がありましたら、ご教示いただけますと幸いです。
よろしくお願いいたします。
ごめんなさい、複雑なVBAの方へ脱線させてしまって、
文字が化けるので、文字コードから攻めた方が良かったみたいです。
を参考に(他のオプションもみてください。)
だまされたと思って、
http://search.yahoo.co.jp/search?ei=Shift_JIS&p=津軽リンゴ
↑を実行してみてください。
原因が
http://search.yahoo.co.jp/search?p=津軽リンゴ
だと、文字化けなので、
文字を指定した、
ei=Shift_JIS の オプションを付けると、大丈夫な感じです。
テスト
http://search.yahoo.co.jp/search?ei=Shift_JIS&p=魚沼こしひかり
http://search.yahoo.co.jp/search?ei=Shift_JIS&p=プログラミング
http://search.yahoo.co.jp/search?ei=Shift_JIS&p=横浜
なので、
webクエリーを作成するときに
ei=Shift_JIS 付きで作成してみてください。
※VBAは忘れてください・・・(ぉぃぉぃ)
yahooで漢字(2バイトコード)をうまく自動変換してくれないみたいなので、
http://search.yahoo.co.jp/search?p=%E6%B4%A5%E8%BB%BD%E3%83%AA%E3%83%B3%E3%82%B4
と渡すと、OKみたいです。
なので、
【ハウツー】Excel VBAでWebサービス - ExcelでJScriptの機能を利用しよう (1) はじめに | パソコン | マイナビニュース
を参考にして、
津軽リンゴを%E6%B4%A5%E8%BB%BD%E3%83%AA%E3%83%B3%E3%82%B4に変換して、
q=の後ろにつなげて Webクエリーに渡してみては?
'VBA から javaScriptのencodeURIを使うテスト ' 先に http://news.mynavi.jp/articles/2012/03/25/vba/index.html を見てください。 'エンコード元の文字列を受け取り、javaScriptのencodeURIで変換して返す Function JavaScript_encodeURI(strMOJI As String) As String '検索文字をJavaScriptのencodeURI関数で作る Dim strPARA As String 'パラメーター Dim sc As Object Set sc = CreateObject("ScriptControl") sc.Language = "Jscript" 'JavaScriptを指定(書き間違えないでね) strPARA = sc.CodeObject.encodeURI(strMOJI) 'encodeURI関数を呼ぶ Set sc = Nothing Debug.Print strPARA JavaScript_encodeURI = strPARA '変換結果を返す End Function Sub MAIN0405() '検索文字を入力 ※本当は、ここはセルから取得ですね・・・ Dim strWORD As String strWORD = InputBox("キーワード=", "入力", "津軽リンゴ") '変換処理を呼ぶ Dim strPARA As String strPARA = JavaScript_encodeURI(strWORD) 'キーワードを渡し結果を受け取る '確認 手抜きで Shell でWebページを表示する Dim strURL As String 'URL+変換したパラメーターでサーチする strURL = "http://search.yahoo.co.jp/search?p=" & strPARA Call Shell("explorer.exe """ & strURL & """", vbNormalFocus) 'これが、うまく Webクエリーで応用できたらいいんだけど・・・ End Sub
※ http://www.ken3.org/vba/backno/vba162.html を 少し修正
うまいこと、Webクエリーのパラメーターとして、渡せるといいなぁ・・と思いつつ失礼します。
あまり 複雑にすると怒られそうですが、
パラメーター入力で、認識しないみたいなので、
Webクエリーをはじめに作成してから、
編集処理をマクロ記録してみます。
URLの編集場所、記録されたコードを探し、アレンジしてみました。
Option Explicit 'VBA から javaScriptのencodeURIを使うテスト ' 先に http://news.mynavi.jp/articles/2012/03/25/vba/index.html を見てください。 'エンコード元の文字列を受け取り、javaScriptのencodeURIで変換して返す Function JavaScript_encodeURI(strMOJI As String) As String '検索文字をJavaScriptのencodeURI関数で作る Dim strPARA As String 'パラメーター Dim sc As Object Set sc = CreateObject("ScriptControl") sc.Language = "Jscript" 'JavaScriptを指定(書き間違えないでね) strPARA = sc.CodeObject.encodeURI(strMOJI) 'encodeURI関数を呼ぶ Set sc = Nothing Debug.Print strPARA JavaScript_encodeURI = strPARA '変換結果を返す End Function Sub A1クエリーの更新() 'A1から検索文字を受け取る Dim strWORD As String strWORD = Range("A1") 'A1を変換したいので。 '変換処理を呼ぶ Dim strPARA As String strPARA = JavaScript_encodeURI(strWORD) 'キーワードを渡し結果を受け取る '記録したクエリー更新にする Range("A5").Select 'クエリーの頭を選択して、、URLを変え更新。芸がないけど・・ With Selection.QueryTable .Connection = "URL;http://search.yahoo.co.jp/search/?p=" & strPARA .Refresh BackgroundQuery:=False '↑でセット後 更新する End With 'これが、うまく Webクエリーで応用できたらいいんだけど・・・ 'んっ?、もう一つの Google検索と連動しないと、面白くないのかなぁ・・・ End Sub
http://www.youtube.com/watch?v=M6zRbnXfEc0
↑最後、保存キャンセルで失敗して録画が止まってしまいました・・・参考程度に見てください。
テストで作ったファイルです
http://d.hatena.ne.jp/ken3memo/files/Book0405.zip
↑名前を付けて保存後、ファイルをテストしてみてください。
ごめんなさい、複雑なVBAの方へ脱線させてしまって、
文字が化けるので、文字コードから攻めた方が良かったみたいです。
を参考に(他のオプションもみてください。)
だまされたと思って、
http://search.yahoo.co.jp/search?ei=Shift_JIS&p=津軽リンゴ
↑を実行してみてください。
原因が
http://search.yahoo.co.jp/search?p=津軽リンゴ
だと、文字化けなので、
文字を指定した、
ei=Shift_JIS の オプションを付けると、大丈夫な感じです。
テスト
http://search.yahoo.co.jp/search?ei=Shift_JIS&p=魚沼こしひかり
http://search.yahoo.co.jp/search?ei=Shift_JIS&p=プログラミング
http://search.yahoo.co.jp/search?ei=Shift_JIS&p=横浜
なので、
webクエリーを作成するときに
ei=Shift_JIS 付きで作成してみてください。
※VBAは忘れてください・・・(ぉぃぉぃ)
あれ...直接URLに貼るとうまく行く?、リンクにするとダメなのかなぁ。
得意げに回答作りましたが、テストしないとダメですね。。。う~ん。。
ご返答遅くなり大変申し訳ございません!ご指示の通り、WebクエリのURLのパラメータの前にei=Shift_JISを挿入して実行したところ・・・なんと、うまくいきました!!!!
まさにこれが実現したかったことです。こんなシンプルな方法をご教示頂き..本当にありがとうございました!また VBAにつきましても懇切にお教え頂きこちらもありがとうございました。文字の装飾等も要所要所気を遣って頂きとても分り易かったです。深く御礼申し上げます。
あれ...直接URLに貼るとうまく行く?、リンクにするとダメなのかなぁ。
2012/04/06 07:03:51得意げに回答作りましたが、テストしないとダメですね。。。う~ん。。
ご返答遅くなり大変申し訳ございません!ご指示の通り、WebクエリのURLのパラメータの前にei=Shift_JISを挿入して実行したところ・・・なんと、うまくいきました!!!!
2012/04/12 22:49:52まさにこれが実現したかったことです。こんなシンプルな方法をご教示頂き..本当にありがとうございました!また VBAにつきましても懇切にお教え頂きこちらもありがとうございました。文字の装飾等も要所要所気を遣って頂きとても分り易かったです。深く御礼申し上げます。