本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[VB2] DDE 機能の使用方法

文書番号: 410494

最終更新日: 1999/03/21


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP410494

概要

この資料では Microsoft(R) Excel for Windows(TM) Version 4.0/5.0 (以下 Excel
for Windows)、 Microsoft(R) Word for Windows(TM) Version 5.0 (以下 Word for
Windows)、Microsoft Access(R) Relational Database Management System for
Windows(TM) Version 1.1 (以下 Access for Windows) および、Visual Basic
for Windows 2.0 で作成したプログラムとの Dynamic Data Exchange (以下 DDE)
を行う方法について記述しています。

代表的なプロパティ

LinkTopic

[form.][control.]LinkTopic[=link$]
DDE でリンクするアプリケーション名とトピック名を指定します。なお、アプリ
ケーション名やトピック名に関しては各ソース アプリケーションのマニュアル等
をご参照ください。

LinkItem

[form.]{label|picturebox|textbox}.LinkItem[=stringexpression$]
DDE でリンクする場所を指定します。なお、アイテム名に関しては各ソース
アプリケーションのマニュアル等をご参照ください。

LinkMode

[form.][control.]LinkMode[=mode%]
リンクの種類 (自動 / 手動 / 通知) を指定します。

LinkExecute

[form.][control.]LinkExecute cmdstring$
ソース アプリケーションにコマンド文字列を送ります。なお、送る文字列は
ソース アプリケーションによって異なります。コマンド文字列については
各ソース アプリケーションのマニュアル等をご参照ください。

リンクの種類解説

自動 (LinkMode = 1)

ソースのデータが変更される度にデスティネーションにデータが転送されます。

手動 (LinkMode = 2)

LinkPoke/LinkRequest が実行された時にデータが転送されます。

通知 (LinkMode = 3)

ソースのデータが変更されたことがデスティネーションに通知されます。データを
受け取るにはデスティネーションから LinkRequest を実行します。

Excel for Windows (指定できる Topic を探す)

以下はボタンを押すことで、Excel for Windows と DDE を行う際に LinkTopic
に指定できる文字列をテキスト ボックスに表示させるサンプルです。フォーム
上にテキスト ボックス コントロールと コマンド ボタン コントロールを作成
し、各イベント プロシージャを記述してください。テキスト ボックス コント
ロールの MultiLine プロパティは TRUE にしておきます。
このサンプルを実行させる場合には Excel for Windows を起動させ、対象と
なるファイルをオープンしておく必要があります。
なお、LinkTopic を変更すれば、Word for Windows、Access for Windows でも
利用可能です。
  Sub Form_Load ()
      Text1.LinkTopic = "Excel|System"
      Text1.LinkItem = "Topics"
      Text1.LinkMode = 2
  End Sub
  Sub Form_Unload (Cancel As Integer)
      Text1.LinkMode = 0
  End Sub
  Sub Command1_Click ()
      Text1.LinkRequest
  End Sub

Excel for Windows (Sheet)

以下はテキストボックスに入力したデータを Excel for Windows のシート
(Sheet1) 上のセル (R?C1) に転送するサンプルです。フォーム上にテキスト
ボックス コントロールを作成し、各イベント プロシージャを記述してくだ
さい。Visual Basic for Windows 2.0 の テキスト ボックスにデータを入力
し、[Enter] キーを押すと Excel for Windows のセルに転送されます。
なお、このサンプルを実行させる場合には Excel for Windows を起動させて
おく必要があります。また、このサンプルはセル形式が R1C1 形式の場合を
想定して作成されていますので、A1 形式の場合は R1C1 形式に変更した後に
実行してください。
  Dim nData As Integer
  Sub Form_Load ()
      ' 既存ファイルの場合は [Book1.xls]Sheet1 と拡張子も含めます。
      Text1.LinkTopic = "Excel|[Book1]Sheet1"
      ' Book になっていない場合 (4.0 の場合) は以下のように設定します
      ' Text1.LinkTopic = "Excel|Sheet1"
      Text1.LinkMode = 2
      nData = 1
  End Sub
  Sub Form_Unload (Cancel As Integer)
      Text1.LinkMode = 0
  End Sub
  Sub Text1_KeyPress (KeyAscii As Integer)
      If KeyAscii = &HD Then
          Text1.LinkItem = "R" + LTrim$(Str$(nData)) + "C1"
          Text1.LinkPoke
          nData = nData + 1
          Text1.Text = ""
          KeyAscii = 0
      End If
  End Sub

Excel for Windows (Chart)

以下は Excel for Windows の チャート (グラフ 1) をピクチャー ボックス
に転送するサンプルです。
フォーム上にピクチャー ボックス コントロールを作成し、各イベント プロ
シージャを記述してください。
Visual Basic for Windows 2.0 のピクチャー ボックスをクリックすると
データが転送されます。なお、このサンプルを実行させる場合には Excel
for Windows を起動させて、チャートを作成しておく必要があります。
  Form_Load ()
      Picture1.LinkTopic = "Excel|[Book1]sheet1 グラフ 1"
      ' 4.0 の場合は以下のように記述します
      ' Picture1.LinkTopic = "Excel|Sheet1 Chart 1"
      Picture1.LinkItem = "Chart"
      Picture1.LinkMode = 2
  End Sub
  Form_Unload (Cancel As Integer)
      Picture1.LinkMode = 0
  End Sub
  Sub Picture1_Click ()
      Picture1.LinkRequest
  End Sub

Excel for Windows (コマンドの実行)

以下は ボタンを押すことで、Excel for Windows の マクロ (OPEN コマンド)
でファイルをオープンするサンプルです。フォーム上にラベル コントロールと
コマンド ボタン コントロールを作成し、各イベント プロシージャを記述して
ください。なお、このサンプルを実行させる場合には C:\EXCEL ディレクトリに
BOOK1.XLS を作成し、Excel for Windows を起動させておく必要があります。
  Command1_Click ()
      Label1.LinkTopic = "Excel|System"
      Label1.LinkMode = 2
      '文字列を囲むための " は 2 つつなげることで文字の " と認識されます
      Label1.LinkExecute "[OPEN(""C:\EXCEL\BOOK1.XLS"")]"
      Label1.LinkMode = 0
  End Sub

Word for Windows

以下はテキスト ボックスに入力した文字列をボタンを押すことで、Word for
Windows の文書 (W4WDDE.DOC) 上のブックマーク (DDE_LINK) に転送する
サンプルです。
フォーム上にテキスト ボックス コントロールとコマンド ボタン コント
ロールを作成し、各イベント プロシージャを記述してください。
テキスト ボックス コントロールの MultiLine プロパティを TRUE にする
ことで、複数行からなる文字列を転送することが可能になります。
なお、このサンプルを実行させる場合には Word for Windows を実行させ、
W4WDDE.DOC という名前のファイルをオープンしておく必要があります。
新規作成時は W4WDDE.DOC という名前で保管してください。また、文書内の
リンクを張る場所 (LinkItem) には DDE_LINK という名前のブック マークを
設定しておいてください。
ブック マークの設定方法に関しましては Word for Windows のマニュアルを
ご参照ください。
  Sub Form_Load ()
      Text1.LinkTopic = "WinWord|W4WDDE.DOC"
      Text1.LinkItem = "DDE_LINK"
      Text1.LinkMode = 2
  End Sub
  Sub Form_Unload (Cancel As Integer)
      Text1.LinkMode = 0
  End Sub
  Sub Command1_Click ()
      Text1.LinkPoke
      Text1.Text = ""
  End Sub

Access for Windows

以下はボタンを押すことで、Access for Windows のデータベースファイルから
SQL 文で指定したデータを抽出し、テキスト ボックスに表示させるサンプルで
す。フォーム上にテキスト ボックス コントロールとコマンド ボタン コント
ロールを作成し、各イベント プロシージャを記述してください。複数件のデー
タが選択される可能性があるため、テキスト ボックス コントロールの
MultiLine プロパティは TRUE にしておきます。
なお、このサンプルを実行させる場合には Access for Windows を実行させ、
ACDDE.MDB という名前で Table1 というテーブルを持ったデータベースファイ
ルをオープンしておく必要があります。新規作成時は ACDDE.MDB という名前で
保管してください。テーブルの作成方法に関しましては Access for Windows
のマニュアルをご参照ください。
  Sub Form_Load ()
      Text1.LinkTopic = "MSAccess|ACDDE.MDB;SQL Select * FROM Table1;"
      Text1.LinkItem = "Data"
      Text1.LinkMode = 2
  End Sub
  Sub Form_Unload (Cancel As Integer)
      Text1.LinkMode = 0
  End Sub
  Sub Command1_Click ()
      Text1.LinkRequest
  End Sub

Visual Basic for Windows で作成したプログラム

以下はデスティネーション アプリケーションのテキスト ボックスに入力した
データをソース アプリケーション のテキスト ボックスに転送するサンプル
です。フォーム上にテキスト ボックス コントロールを作成し、各イベント
プロシージャを記述してください。
なお、このサンプルを実行させる場合にはデスティネーション アプリケーショ
ンより前にソース アプリケーション (VBDDESVR.EXE) を実行させておく必要が
あります。ソース アプリケーションのフォーム上にはテキスト ボックス コン
トロールを作成し、フォームの LinkMode プロパティは 1 (ソース) に、
LinkTopic プロパティは SourceAP にしておきます。イベント プロシージャ
等は特に設定する必要はありませんが、ファイル名は必ず VBDDESVR.EXE に
して下さい。

ディスティネーション プログラム

  Sub Text1_KeyPress (KeyAscii As Integer)
      If KeyAscii = &HD Then
          Text1.LinkPoke
          Text1.Text = ""
          KeyAscii = 0
      End If
  End Sub
  Sub Form_Load ()
      Text1.LinkTopic = "VBDDESVR|SourceAP"
      Text1.LinkItem = "Text1"
      Text1.LinkMode = 2
  End Sub
  Sub Form_Unload (Cancel As Integer)
      Text1.LinkMode = 0
  End Sub

Keywords: KBHOWTO KB410494
Technology: kbAudDeveloper kbVBSearch

inserted by FC2 system