Access2010のフォームにホームページを表示する方法~第2回(Yahoo!路線情報を利用)

フォームにコントロールをセットする

前回に引き続き、Access2010のWebブラウザーコントロールについてアップします。
今回はVBAを使ってフォームのコントロールソースをセットし、Webサイトを表示する方法について説明します。

今回の例題はYahoo!路線情報を利用します。フォームから出発地と目的地を入力して路線検索結果を表示出来るようにしてみましょう。

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件のコメントがあります。

  1. たろくん より:

    このサンプルプログラムだと、出発地・目的地を変更するたびにURLを読み込んでいるので、ネットワークの遅いシステムだと表示までに時間が掛かると思うのですが・・・。

    HPの出発地・目的地のテキストボックスのみを変更できるようにはならないのでしょうか?

    1. infith より:

      ”たろくん”さん。コメントありがとうございます。
      今回のサンプルはあくまで動的にWebブラウザコントロールのコントロールソースを変更する方法についてアップしました。
      検索するだけであればフォームのテキストボックスからでは無くYahoo!JAPANロコの路線情報のトップページをWebブラウザコントロールに表示してページ内で検索した方が良いかも知れませんね。
      それでも正直にいってWebブラウザコントロールはフォーム上でIEを呼び出しているようなものですからスペックによってはモッサリしている感じが否めないのかもしれませんが・・・。

      単純に結果を取得するだけであればHTMLを取得する方法でアップしたやり方のほうが数段スピードが速いです。※必要な情報をソースコードから抽出しないといけないので面倒ですが・・・。

      標準コントロールになったAccess2010のWebブラウザコントロールには正直手を焼いてるので時間を見つけて色々と調べてみようとは思いますが・・・。
      それでは。

コメントは受け付けていません。