基本的にはEXCEL版の応用
ExcelにGoogle Maps APIで地図を埋め込み、住所検索、拡大/縮小、地図種類変更
を今回はACCESSのフォームでやってみるときの変更点をメモします。
ACCESSの場合表示用フィールドを設ける
EXCEL版はテキストボックスを作って、それに住所を入力してOKボタンを押すと検索します。これはACCESSでも可能ですが、GOOGLEMAP表示用アドレスフィールドを設けると、何度も入力しなくて済みます。
というのもGOOGLEMAPは必ずしも正確な住所で検索ができず、緯度経度、近くの建物の住所等、あるはQIITA町2010-2では検索できないがQIITA町2010では検索できる、など工夫する必要があるためです。
ACCESSではスピンボタンを表示させる時工夫が必要
上記のようなフィールドを設けたテーブルを単票形式のフォームに表示させ、上記記事のようにOKボタン、オプションボタンを設けますが、スピンボタンが見つかりません。
Web Browserと似ていますが、ツールボックスには表示されないので、
ActiveX Contorolsから
Microsoft FormsX.X Spinbutton
を選択する必要があります。
このときSpinbutton1とするとなぜかオブジェクト名がSpinbutton1_Spinbutton1となりましたが、そういう時もあるのでしょう。
ACCESSのWeb BrowserにはNavigate命令がない
AccessのWEB BROWSERにはありません。どうするかというとCotrolsourceプロパティに入れます。ところがここでもう一つ注意点があります
ACCESSのWeb BrowserのURLはEXCELと違う
navigate method missing from web browser control
Try this
=("www." & [text2] & ".com")
とあります。つまり()でつつまないと駄目なのです。
以上をまとめると、上記記事のOKボタンのプロシージャの記述はACCESSの場合、該当する部分の2行は記述を以下のように変更する必要があります。
Access.VB```
'EXCEl VBA
googleUri = "=(" & Chr(34) & "http://maps.google.com/maps/api/staticmap?size=600x600&zoom=" & no & "&sensor=false&markers=" & myAddressCoodinatePosition & "&maptype=" & myMapType & Chr(34) & ")"
WebBrowser1.ControlSource = googleUri
## オプションボタンにはキャプションがない
ACCESSのオプションボタンにはキャプションがありません
myMapType = OptionButton1.Caption
という記述はエラーになります。
また、元の記事はグループ化してあるのかな?オプションボタンを一つ押すと他は排他でFALSEにする必要があります。
Captionの代わりにtagプロパティを使うか、直接値を記述します。
optionbutton1を作ったらプロパティのタグにroadmapと入れます
もしくは値を直接入れます
Access.VBA```
Private Sub OptionButton1_Click()
okButton.Enabled = True
OptionButton2.Value = False
OptionButton3.Value = False
OptionButton4.Value = False
myMapType = OptionButton1.Tag
'myMapType = "roadmap"
地図の表示
End Sub
地図の表示サブプロシージャはフォーム内
原記事ではわかりにくいですが、地図の表示はフォームのプロシージャに記述しないと動きません。
最後に
この機能はオフィス2007以降に仕様が変わったもののようですが、むしろこのフォームでボタンを押すと地図を表示する機能はACCESS用ではないでしょうか。あと住所ではなく緯度経度、ランドマークでもできますので、その場所にあった最適な表示を選んでみてください。
また縮尺はデフォルトではこの記事は10に設定されていますが、少し詳しく、12くらいでもいいかもしれません。縮尺用のフィールドを設けてもいいかもしれません。ただし、フォーム内の地図はマウスで拡大できます。