動的データ交換機能について(DyamicDataExchange)
GIS
Matildaでは実は外部アプリケーションとの連携機能も非常に優れています。DDEサーバーの機能を備えておりますので、ExcelやAccessのVisualBasic(VBA)やPerlやRuby,Python,などインタープリタ言語からもコマンドを送ることで操ることが可能です。
VBAからGIS Matildaを操るサンプル(単体コマンド編)
この例ではExcelのVBAを使い、Matildaのビューウィンドウの表示範囲を設定します。
Dim ch As Long
Dim com As Variant
ch = Application.DDEInitiate(App:="matilda", topic:="DdeMatilda") ' チャンネル定義
(64bitからの実行の時は"matilda64"としてください)
com = "ZOOM_MAIN@-19999.904,-108624.486,-19974.289,-108604.716" ' 送りたいコマンド
Application.DDEExecute ch, com ' データ送信
Application.DDETerminate ch ' チャンネル開放
たった6行(宣言部を除けば4行)で制御できます。これを関数で実行するだけで動作し、非常に強力な汎用性を持ちますので外部のシステムからも簡単に使うことができます。
VBAからGIS Matildaを操るサンプル(まとまったコマンド編)
この例ではExcelのVBAを使い、まとまったコマンドを入力してあるテキストファイルを指定して流す例を示します。まとまったコマンドとは、2個以上の連続した動作をさせたい時に使います。何度もコマンドを送りつけるのではなくて、コマンドプロシージャ(コマプロ)的なバッチファイルに近いイメージで使います。
Dim ch As Long
Dim com As Variant
ch = Application.DDEInitiate(App:="matilda", topic:="DdeMatildaFile") ' チャンネル定義
(64bitからの実行の時は"matilda64"としてください)
com = "c:¥tmp¥samplecmd.txt" ' コマンドを入力したテキストファイル
Application.DDEExecute ch, com ' データ送信
Application.DDETerminate ch ' チャンネル開放
単体コマンドと異なり、GIS Matildaに送信してからMatilda自身がそれを順番に実行していきます。
コマンド一覧(随時追加していっています)
コマンドは随時増加していってますので、
別ページに記載いたしました。