交通費清算用の Excel シートに、運賃検索用のハイパーリンクを付ける
Excel の VBA で、文字列をURLエンコードする関数を自作されている方のページを見つけたので、これと Excel の Hyperlink 関数を組み合わせれば、交通費清算用の Excel シートからワンクリックで運賃検索できるんじゃね? と思った次第。
URLエンコードする関数
ここらへんからいただきました。なお、Excel2013以降ではENCODEURLというワークシート関数が実装されているということですから、自分でワークシート関数を用意する必要はありません。
http://excelution.net/function-to-url-convert-some-japanese/
上記URLが見れない場合を考慮して以下に引用させていただきます。
Function UrlEncode(mySource As Variant) As String '変数の宣言 Dim objSC As Object 'ScriptControlオブジェクトを格納するための変数 'ScriptControlオブジェクトのインスタンスを生成 Set objSC = CreateObject("ScriptControl") 'ScriptControlオブジェクトの言語をJScriptに設定 objSC.Language = "JScript" '関数の戻り値として、引数mySourceをURLエンコードした値をセット UrlEncode = objSC.CodeObject.encodeURIComponent(mySource) 'ScriptControlオブジェクトを破棄 Set objSC = Nothing End Function
この関数をワークシートから使えるようにする手順は http://d.hatena.ne.jp/pslabo/20150914#p1 あたりを参照してください。
Excel ワークシートに、運賃検索のハイパーリンクを動的に表示するセルを作る
例えば I3, J3 のセルにそれぞれ出発駅、到着駅の名前を格納している場合は、K3 のセルに以下の式を入力すればOKです。
=IF(AND(I3<>"",J3<>""),HYPERLINK("http://transit.yahoo.co.jp/search/result?flatlon=&from=" & urlencode(I3) & "&to=" & urlencode(J3),"経路と運賃検索する"),"")
すると K3 には Yahoo! Japan の路線情報で経路検索するURLが生成されています。これをクリックするだけで運賃検索できます。なんと便利なことでしょう。
※手元のExcelは2013より古いので、ENCODEURL関数を用いたケースは動作確認しておりませんが、Excel2013以降の場合は urlencode を ENCODEURL に書き換えればよいのではと思います。