学用Visual BASIC for Windows动态数据交换 一、动态数据交换（DDE）简介 动态数据交换（DDE）是Windows提供的一种重要功能，它是应用程序之间相互通信时较为常用的数据交换技术。动态数据交换总是在客户应用程序与服务器应用程序之间发生。DDE服务器是一个存取对其它应用程序有用的数据，或执行客户应用程序所要求命令的程序，DDE客户则是一个从服务器获得数据或其它服务的程序。一个应用程序可以既是客户应用程序，又是服务器应用程序。 二、在设计状态下建立DDE对话管道
用VB设计应用软件时，在设计状态下就可以建立与其它应用程序的DDE对话管道。
（一）VB应用程序作为客户应用程序
VB应用程序若需要由某一（些）应用程序提供数据时，则VB应用程序就是客户应用程序，而提供数据的应用程序就是服务器应用程序。建立这种DDE对话管道前，服务器应用程序必须是在执行状态下，而VB应用程序则是在设计状态下。建立DDE对话管道的一般方法如下：
1．在服务器应用程序上选出要传递的数据范围。
2．选择服务器应用程序“Edit”菜单项下的“Copy命令。
3．回到VB应用程序上，准备好要接受数据的对象（文本框、标签或图像框）。
4．在VB应用程序“Edit”菜单项下选择“Paste Link”命令。
（二）VB应用程序作为服务器应用程序
VB应用程序也可以给其它应用程序提供数据，此时，VB应用程序是服务器应用程序，而请求VB应用程序提供数据的应用程序是客户应用程序。建立DDE对话管道的一般方法如下：
l．在VB应用程序上准备好要提供的数据。
2．在VB菜单“Edit”项下选“Copy”。
3．在客户应用程序上选好要接受数据的位置。
4．在客户应用程序菜单“Edit”项下选“Paste Link”命令。

三、在执行状态下建立DDE对话管道
（一）VB应用程序作为客户应用程序
当VB应用程序作为客户应用程序时，要在程序执行时进行对话，则“linkTopic”、“linkiter”、“linkMode”这三个属性必须自动加人程序中才能启动DDE对话。“LinkTopic”属性指的是担任服务器应用程序的名称，以及在它下面所建立的文件名。格式为：
服务器应用程序名称|标题
例如Excel|C：＼Exce1＼Try1．xli
“Linkiter”属性指的是在服务器应用程序的“LinkTopic”属性下指定要传递给VB控件的某些项目，这些项目名称因服务器应用程序而异。在Excel上用的是“RIC1”、“R1C2”等。
“Linkiter”属性用来决定DDE对话的方式并初始化链接。
当VB应用程序作为客户应用程序时，对其控件来说，”LinkMode”属性分为三种：
（1）“0～－None”（缺省）：没有DDE交互作用；
（2）“1——Hot”（热式）：当与其对应的服务器应用程序的数据变动时，VB应用程序中相应对象上的数据也会变动；
（3）“2-－Cold”（冷式）:VB应用程序中相应对象上的数据只有当被请求时才更新。
例：编写一程序，在Excel和VB应用程序之间建立DDE对话管道。要求：VB从应用程序Excel建立的 6个单元（“RIC1～R1C6”）上获取数据到Text1文本框上。程序如下：
Sub Form - Click()
For i＝1 to 6
it i =l then
text1．linKmode＝0 &&清除原有的DDE链接
textl.linktopic = “excel|sheetl”
textl．linktopic＝ excel|sheetl
textl．linkitem＝ R1C1 &&将texel上的第一个单元的数据传递到text1文本框上
text1.linkmode＝1＆＆建立DDE链接
Else
textl．linkitem＝“R1”＋“C”＋Ltrim＄（i）） ＆＆将 Excel
上的第i个单元的数据传递到text文本框上
End if
Next i
End sub
（二）VB应用程序作为服务器应用程序
VB应用程序作为服务器应用程序时用到两个属性：“LinkToOpic”和“Linkmode”。“LinkTopic”属性表示：如果服务器应用程序某一个窗体要对客户应用程序作出反应，则该窗体或该窗体中的某一（些）对象就是客户应用程序所请求数据的项目。例如：如果在VB应用程序上设计了一个叫“Houcount”的应用程序，这个应用程序中有一个窗体的“LinkTopic”属性被设为“account”，那么客户应用程序就可用“Houcountl ac－count”来与该窗体建立DDE对话管道。如果在该窗体上有一个对象“interest”，那么客户应用程序就可用“Houcount| account！interest”来取得此对象上的数据。
“linkMode”属性有两种选择：“0——None”和“l－-server”。如果设置为“1－server”，则窗体上的对象就可以提供数据给已建立DDE对话管道的客户应用程序。如果设为“0-－None”则客户应用程序就无法从此窗体取得数据，其缺省值为1。
例：假设在VB应用程序Houl中，某一窗体“account”上有一个文本框“study”存有Excel所需的数据，编写一个程序来启动DDE对话管道，使得Excel能从VB应用程序的“account”窗体上获得数据。
程序如下：
Sub Form－Click（）
Linktopic＝“account”
End sub
Linkmode＝ 1
在Excel上的某一存储单元只要键人“＝Houl| ac－count！study”命令字符串，即可将VB应用程序窗体上的数据传递到此存储单元上。
（侯丰胜 侯争胜）