4.10 DDE通信関数

マクロ中でDDE通信関数を使うと,WindowsのDDE機能を使って,Windows上のほかのアプリケーションのコマンドを実行できます。

DDE通信関数を使ったマクロコマンドの例を次に示します。このマクロコマンドを実行すると,Microsoft Excelで作成したファイル(c:¥tmp¥work.xls)の2行目の3列目にABCという文字列を入力します。

00000100  macro;  "sample"  ;  ;  "DDE サンプル マクロ"  ;
00000200  param;  10.a.c(press enter key!)= "a"  ;
00000300  define;  ¥¥frtn.i= 0  ;
00000400  define;  hdle.i= DDECNC(Excel : "system")  ;
00000500  /* Excelが起動されていない? */
00000600  if;  NE(&¥¥frtn : 0)  ;
00000700  /* Excelを起動します */
00000800  define;  rtn.i= SYSTEM("c:¥msoffice¥excel5¥excel.exe" : 0 : +0)  ;
00000900  define;  hdle.i= DDECNC(Excel : "system")  ;
00001000  end if;  ;
00001100  /* Excelのコマンドを実行します */
00001200  define;  cmd1.c= "[OPEN(""c:¥tmp¥work.xls"")]"  ;
00001300  define;  cmd2.c= "[SELECT(""R2C3"")]"  ;
00001400  define;  cmd3.c= "[FORMULA(""ABC"")]"  ;
00001500  define;  rtn.i= DDEEXE(&hdle : &cmd1//&cmd2//&cmd3)  ;
00001600  /* Excelとの対話を終了します */
00001700  define;  rtn.i= DDEDSC(&hdle)  ;
00001800  end;

00000300では,関数のエラーコードを得るためのシステム変数(¥¥frtn)を定義して,初期化しています。

00000400では,DDECNC関数でMicrosoft Excelとの対話を開設しています。ハンドル名はhdleという変数に格納します。対話を開設する場合のアプリケーション名やトピック名の詳細については,それぞれのアプリケーションのマニュアルなどを参照してください。

00000600から00001000では,Microsoft Excelが起動されていないためにDDECNC関数でエラーが発生した場合の処理を定義しています。システム変数に0(正常終了)以外の値が返った場合,SYSTEM関数でMicrosoft Excelを起動します。その後,再びDDECNC関数で対話を開設します。

00001500では,DDEEXE関数でMicrosoft Excelのコマンドを実行しています。アプリケーションのコマンドの詳細については,それぞれのアプリケーションのマニュアルなどを参照してください。

00001700では,DDEDSC関数でMicrosoft Excelとの対話を終了しています。

<この節の構成>
4.10.1 DDECNC(DDE通信接続)
4.10.2 DDEDSC(DDE通信切断)
4.10.3 DDEREQ(DDE通信データ問い合わせ)
4.10.4 DDEPOK(DDE通信データ送信)
4.10.5 DDEEXE(DDE通信コマンド実行)