Access2010のフォームにホームページを表示する方法~第2回(Yahoo!路線情報を利用)
前回に引き続き、Access2010のWebブラウザーコントロールについてアップします。
今回はVBAを使ってフォームのコントロールソースをセットし、Webサイトを表示する方法について説明します。
今回の例題はYahoo!路線情報を利用します。フォームから出発地と目的地を入力して路線検索結果を表示出来るようにしてみましょう。
まずは検索フォームを作成しましょう
まずはフォームにそれぞれのコントロールを設置しましょう。
検索条件の入力に利用するテキストボックスとWebブラウザーコントロール、コマンドボタンを配置します。
それぞれのコントロールの名前はご自由に設定していただいて結構ですがとりあえず下図のようにしました。
VBAコードを作成します
次にコマンドボタン[cmd検索]のクリック時のイベントに[イベント プロシージャ]を設定し、[…]ボタンをクリックしてVBAコードを入力しましょう。
VBAのコードは以下の通りです。
■サンプルソース1
Private Sub cmd検索_Click() Dim s出発 As String Dim s到着 As String Dim w_URL As String '入力漏れがある場合は処理を終了する。 If Nz(Me!txb出発, "") = "" Or Nz(Me!txb到着, "") = "" Then Exit Sub '文字コードをUTF-8に変換 s出発 = UrlEncodeUtf8(Me!txb出発) s到着 = UrlEncodeUtf8(Me!txb到着) 'Yahoo!運賃検索URLを作成する w_URL = "http://transit.loco.yahoo.co.jp/search/result?from=" _ & s出発 & "&to=" & s到着 ' フォームに検索結果を表示する Me!WebBrowser0.ControlSource = Chr(61) & Chr(34) & w_URL & Chr(34) End Sub
補足:VBAコードの解説
上記のコードを解説すると検索ボタンのクリック時にテキストボックスの値をURLに埋め込み、コントロールソースにセットしているだけの簡単なコードです。
Yahoo!路線情報のURLは14~15行目で設定しています。
http://transit.loco.yahoo.co.jp/search/result?from=出発地&to=目的地
※オプション等は省略しています。
ただし、テキストボックスの値をそのままセットしても文字コードが異なる為、正常に検索できません。
そこで文字コードをUTF-8に変換する訳ですがサンプルソース1の10~11行目で実行しています。
文字コードを変換する為のFunctionプロシージャ[UrlEncodeUtf8]を作成します。
VBAコードは以下の通りです。
■サンプルソース2
'文字列をUTF-8でエンコードする Public Function UrlEncodeUtf8(ByRef strSource As String) As String Dim objSC As Object Set objScript = CreateObject("ScriptControl") objScript.Language = "Jscript" 'JavaScriptのencodeURIComponent関数で変換 UrlEncodeUtf8 = objScript.CodeObject.encodeURIComponent(strSource) Set objSC = Nothing End Function
そして最後にWebブラウザーコントロール[WebBrowser0]のコントロールソースに検索条件が入ったURLをセットします。(サンプルソース1の18行目)
※前回のエントリーでも記載しましたがAccess2010ではNavigateではなくControlSourceにセットしますのでご注意ください。
コードは以下の通りですね。
Me!WebBrowser0.ControlSource = Chr(61) & Chr(34) & w_URL & Chr(34)
※コントロールソースは[=”指定したURL”]とする必要があるので上記のような記述になります。
これで完成です!フォームを保存して実際実行してみましょう。
面倒な方は以下のリンクからサンプルファイルをダウンロードして参考にして下さい。
※ファイルはZip形式
今回のサンプルファイルは以下のリンクからダウンロード可能です。
以上、Access2010のフォームにホームページを表示する方法第2回目でした。
“Access2010のフォームにホームページを表示する方法~第2回(Yahoo!路線情報を利用)” に対して2件のコメントがあります。
コメントは受け付けていません。
このサンプルプログラムだと、出発地・目的地を変更するたびにURLを読み込んでいるので、ネットワークの遅いシステムだと表示までに時間が掛かると思うのですが・・・。
HPの出発地・目的地のテキストボックスのみを変更できるようにはならないのでしょうか?
”たろくん”さん。コメントありがとうございます。
今回のサンプルはあくまで動的にWebブラウザコントロールのコントロールソースを変更する方法についてアップしました。
検索するだけであればフォームのテキストボックスからでは無くYahoo!JAPANロコの路線情報のトップページをWebブラウザコントロールに表示してページ内で検索した方が良いかも知れませんね。
それでも正直にいってWebブラウザコントロールはフォーム上でIEを呼び出しているようなものですからスペックによってはモッサリしている感じが否めないのかもしれませんが・・・。
単純に結果を取得するだけであればHTMLを取得する方法でアップしたやり方のほうが数段スピードが速いです。※必要な情報をソースコードから抽出しないといけないので面倒ですが・・・。
標準コントロールになったAccess2010のWebブラウザコントロールには正直手を焼いてるので時間を見つけて色々と調べてみようとは思いますが・・・。
それでは。