2011年03月26日

googleで住所から緯度・経度を取得する

http://maps.google.com/maps/api/geocode/json?sensor=false&address=URLエンコードした住所
これで緯度・経度を含むデータをjson形式で取得できる。jsonのところをxmlに変えるとxml形式で取得できる。

逆に緯度・経度から住所を取得する場合はlatlngパラメータに緯度・経度をカンマで区切って渡す。
http://maps.google.com/maps/api/geocode/json?sensor=false&latlng=緯度,経度
posted by 忘却の達人 at 19:51| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2011年03月19日

vba:正規表現

VBScript.RegExpオブジェクトを使ってvbaで正規表現を使う。但し、(…)でグループ化した部分を参照する、RegExp.$n は使えない。
「Microsoft VBScript Regular Expression 5.5」のライブラリ参照でアーリーバインドできる。
ex.)文字列からURLを抜き出す。
Dim re As Object
Dim rslt() As Object
Dim url As Object
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "https?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?"
re.IgnoreCase = True
re.Global = True
Set rslt = re.Execute("google:http://www.google.co.jp/,yahoo:http://www.yahoo.co.jp/")
For Each url In rslt
MsgBox url
Next
'rsltはコレクションなのでrslt(0)という記述もOK
posted by 忘却の達人 at 15:10| Comment(0) | TrackBack(0) | vba | このブログの読者になる | 更新情報をチェックする

2011年03月18日

vba:JavaScriptのコードを実行させる

ScriptControlオブジェクトを使うとvbaでJavaScriptのコードを実行させることができる。と言っても正確にはJScriptだけど。正規表現のマッチングやjsonデータを扱えるようになるのでいろいろ便利。
※64bit版OfficeだとScriptControlが使えないらしい。(32bit版OfficeならOSが64bitでもOK)

ex.文字列からyyyy/mm/ddを抜き出し、yyyymmddにして返す。

Dim sc As Object
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
sc.AddCode "function extractDate(dt) { dt.match(/(\d{4})\/(\d{2})\/(\d{2})/); return RegExp.$1 + RegExp.$2 + RegExp.$3; }"
MsgBox sc.CodeObject.extractDate("今日の日付は2011/03/18です。")

※パラメータの無い関数だと罠があった。(Office2010で確認)
sc.AddCode "function noParam() { return 'やっほ〜'; }"
MsgBox sc.CodeObject.noParam() '←何故かエラーになる
MsgBox sc.CodeObject.noParam(0) '←適当にパラメータを渡すと動く
MsgBox CallByName(sc.CodeObject, "noParam", VbMethod) '←CallByNameを使うとパラメータが無くても動く
posted by 忘却の達人 at 00:51| Comment(0) | TrackBack(0) | vba | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。