| 
       << Click to Display Table of Contents >> マニュアル > サーバ作成ガイド > インターフェース編 > DDEインターフェース > ExcelVBAからのDDE接続 > 手順3値の読み書き | 
    
手順3 値の読み書き
読み込み
1.「Module1」に以下のような定義を記述します。
Sub Test1()
    Dim chan As Variant
    Dim result As Variant
    chan = DDEInitiate("FASERVER", "U01.F01")
    result = DDERequest(chan, "T01")
    Range("B1").Value = result(1)
    DDETerminate (chan)
End Sub
この記述により、「Test1」というプロシージャが定義されました。このプロシージャはExcelのシート上に配置したボタンなどから呼び出すことができるようになります。
各コマンドの詳細は以下のとおりです。
コマンド  | 
説明  | 
DDEInitiate 
  | 
DDE通信を開始するコマンドです。サーバのアプリケーション名と、トピック名を指定します。成功すると、DDE通信のチャネルを返します。このチャネルを利用して、他のDDE通信関連のコマンドを実行します。  | 
DDERequest 
  | 
サーバにデータを要求するコマンドです。アイテム名に、データを要求するデバイスを指定します。成功すると、要求したデータを配列で返します。  | 
DDETerminate 
  | 
DDE通信を終了するコマンドです。  | 
2.読み込みを任意のタイミングで行えるように、読み込みようのReadボタンを配置します。
 
ボタンの配置は「開発」タブの挿入から行います。
 

 
ここでは、以下のようにボタンを配置します。
 

 
 
3.ボタンを右クリックして、マクロの登録を選択します。
 

 
 
4.手順1で記述した「Test1」プロシージャーを選択して、マクロの登録を行います。
 
この設定により、ボタン押下で「Test1」の処理が呼び出されるようになります。
 

 
書き込み
 
1.「Module1」に以下のような定義を記述します。
Sub Test2()
    Dim chan As Variant
    Dim result As Variant
    chan = DDEInitiate("FASERVER", "U01.F01")
    DDEPoke chan, "T01", Range("A1")
    DDETerminate (chan)
End Sub
この記述により、「Test2」というプロシージャが定義されました。
コマンドの詳細は以下のとおりです。
コマンド  | 
説明  | 
DDEPoke  | 
サーバにデータを書き出すコマンドです。アイテム名に、データを書き出す対象のデバイスを指定します。  | 
2.書き出した結果をすぐに確認できるようにする目的で、「A1」以外の任意のセルに以下のDDE式を記入します。
 
=FASERVER|U01.F01!T01  | 
上記により、タグ「U01.F01.T01」の値が、対象のセルに表示されるようになります。
尚、キャレット(文字入力カーソル)を「Sub Test2()」から「End Sub」の間のどこかに移動して、「実行」メニューの「Sub/ユーザーフォームの実行」を選択してください。
3.書き込みを行います。
 
「A1」にタグに書き込みたい値を入力し、キャレット(文字入力カーソル)を「Sub Test2()」から「End Sub」の間のどこかに移動して、「実行」メニューの「Sub/ユーザーフォームの実行」を選択してください。
 
VBAの実行により、DDE式を記入したセルの値がA1に入力した値で更新される事を確認してください。
 

尚、上記の処理実行は、Readボタンと同様の方法でボタンから「Test2」を呼び出すことでも実行することができます。
  | 
配列を使用する事で、1つのタグで大量のデータをブロックとして扱うことができます。特に多くのデバイスを扱う場合、1回ずつDDERequestやDDEPokeを呼び出す場合と比較して高速に処理されます。ただし、Excelで配列を授受する場合は、配列サイズに制限がある場合があるため、注意してください。このサイズの制限についてはExcelのバージョンなどで変わる可能性があるため、制限の限界点を知る必要がる場合は、Microsoftへご確認ください。 
 尚、「ExcelVBAからのDDE接続」のサンプルのダウンロードに、配列を使用したサンプルを用意しています。必要に応じて参照してください。  |