地理院地図でkmlを使わずにExcelデータから複数のマーカーをプロット(2)

Excelで位置情報のデータを整理

前回のページで複数のマーカーをプロットするための地理院地図のHTML,Javascriptを用意しました。
ここでは例として、全国の都道府県の県庁所在地をプロットしてみます。

都道府県の位置情報を調べてデータを作成します。いろいろな方法が考えられますが、ここではデータ範囲が明示的なテーブル定義を行います。図のようにワークシート名を「都道府県」テーブル名も「都道府県」と設定して、カラムは都道府県番号「#」、「都道府県名」、「緯度」、「経度」を用意してデータを整理します。

地図をコントロールするプロシージャ

標準モジュールに以下のコードを追加します。

End Sub
[/crayon]

5,14行目 IEオブジェクトを生成

ExcelでIEをコントロールできるように、インスタンスを生成し、オブジェクト変数にセットします。
そのために、Microsoft Internet Controls の参照設定が必要になります。

SS_2014-06-29_12.59.28_half

17〜28行目 IEで地理院地図の準備

17〜28行目のWithブロック内は ieオブジェクトへの処理をまとめたものです。
20〜21行目:前回作成したhtmlファイルのURLでIEを起動し、表示させます。
24〜26行目:IEの表示が完了するまで待ちます。

31〜58行目 リスト内のデータを処理

17〜28行目のWithブロック内はリスト内のデータ処理をまとめたものです。
34行目:テーブルのヘッダ行のワークシートにおける行番号を取得しています。
37〜58行のFor Eachは、テーブル内のカラム”#”の見えている行に対してループします。
オートフィルタを使って非表示になった行は処理されません。
40行目:対象のテーブル内における行番号を取得します。
41〜42行目:その行番号の経度、緯度のカラムの値を取得します。
45〜47行目:前回作成したJavascriptの関数 putMarkersを実行しています。引数は上の行で取得した経度、緯度とアイコンの画像ファイルのアドレスを順に指定しています。画像は開発段階でボツにしたものですが、以下のような1〜47のピンを用意しました。

50〜52行目:説明文の文字列を追加しています。ループ毎に改行タグを入れています。
56行目:ループ処理完了後、作成した説明文文字列をHTMLに渡します。

実行結果

今回の例ではマクロ実行用のインターフェースは用意していませんので、適宜ボタンやメニューを作るか、「開発」タブの「マクロ」から”putMarkers”を実行して下さい。

実行すると、IEが起動し、47都道府県の県庁所在地がプロットされます。
SS_2014-06-29_13.49.36_556px

また、フィルタをかけて一部分のみ表示させると、表示されたもののみプロットします。例えば次のように関東のみでフィルタをかけた場合、

SS_2014-06-29_13.39.20_half

関東の県庁所在地のみがプロットされます。

SS_2014-06-29_13.41.42_556px

ダウンロード

本エントリで作成した、地理院地図でkmlを使わずにExcelデータから複数のマーカーをプロットするコードのサンプルファイルです。

本エントリからコピー&ペーストしてご自身で作成することが可能ですが、面倒な方、やり方がわからない方はこちらをダウンロード下さい。

※ここにGumroadのウィジェットを表示していますが、企業・学校などでフィルタリングにより表示されない場合があります。

関連記事