pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


交通費清算用の Excel シートに、運賃検索用のハイパーリンクを付ける

ExcelVBA で、文字列を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 に書き換えればよいのではと思います。