VB的DDE问题,急等。

zzgcxy 2004-04-20 06:30:46
怎样运用vb 进行dde数据交换!
那位有vb的dde的例子!

...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryuginka 2004-04-20
  • 打赏
  • 举报
回复
Private Sub Form_Click ()
Dim CurRow As String
Static Row ' 工作单的行数.
Row = Row + 1 ' 增加行.
If Row = 1 Then ' 只第一次.
' 确保连接不是活动的.
Text1.LinkMode = 0
' 设置应用程序的名字和题目名.
Text1.LinkTopic = "Excel|Sheet1"
Text1.LinkItem = "R1C1" ' 设置 LinkItem.
Text1.LinkMode = 1 ' 设置 LinkMode 为自动.
Else
' 在数据项目中更新行.
CurRow = "R" & Row & "C1"
Text1.LinkItem = CurRow ' 设置 LinkItem.
End If
End Sub

ryuginka 2004-04-20
  • 打赏
  • 举报
回复
DDE 常数


linkerr(LinkError 事件)
常数 值 描述
vbWrongFormat 1 另外一个应用程序以错误的数据格式请求数据
vbDDESourceClosed 6 接受端应用程序试图在发送端关闭之后继续
vbTooManyLinks 7 发送端所有连接均在使用
vbDataTransferFailed 8 更新接收端的数据时失败


LinkMode 属性(窗体和控件)
常数 值 描述
vbLinkNone 0 无
vbLinkSource 1 发送端(仅对窗体)
vbLinkAutomatic 1 自动(仅对控件)
vbLinkManual 2 手动(仅对控件)
vbLinkNotify 3 通知(仅对控件)


LinkMode 属性(仅为了与 Visual Basic version 1.0 反向兼容; 要使用新的常数来替代)
常数 值 描述
vbHot 1 热链路(仅对控件)
vbServer 1 服务端(仅对窗体)
vbCold 2 冷链路(仅对控件)

LinkOpen 事件


此事件在一个 DDE 对话正在启动时发生。

语法

Private Sub Form_LinkOpen(cancel As Integer)

Private Sub MDIForm_LinkOpen(cancel As Integer)

Private Sub object_LinkOpen([index As Integer,]cancel As Integer)

LinkOpen 事件语法包括下列部分:

部分 描述
object 一个对象表达式,其值是“应用于”列表中的一个对象。
cancel 是一个整数,它用来确定该 DDE 对话是否建立。让 cancel 设置为 0(缺省值)可建立该对话。将 cancel 设置为任何非零值则拒绝对话。
index 一个整数,它用来唯一地标识一个在控件数组中的控件。


说明

对窗体来说,此事件在一个接收端应用程序正在与该窗体建立一个 DDE 对话时发生。对控件来说,此事件在一个控件正在与一个源应用程序建立一个 DDE 对话时发生。
LinkTopic 属性


对于接收端控件-返回或设置发送端应用程序和主题(使用于该应用程序中的基本数据的分组)。为了指定完整的数据链,应当与 LinkItem 属性一起使用 LinkTopic。

对于发送端窗体-返回或设置在 DDE 对话中发送端窗体需响应的主题。

语法

object.LinkTopic [= value]

LinkTopic 属性的语法包含下面部分:

部分 描述
object 对象表达式,其值是“应用于”列表中的一个对象。
value 一个指定 DDE 语法元素的字符串表达式。


说明

LinkTopic 属性由字符串组成,该字符串用来提供为建立接收端链或者发送端链必须的部分信息。该字符串依赖于正在使用的是接收端控件还是发送端窗体。每个字符串对应于标准 DDE 语法的一个或多个元素,它包括 application、topic和 item。

注意 当 DDE 链接的标准定义包括 application、topic 和 item 元素时,对于接收端链接到发送端应用程序来说,应用程序内实际使用的语法可作少许的变更。例如,在 Microsoft Excel 中,可使用下面的语法:

application|topic!item

而在 Microsoft Word for Windows 中,使用的是:

application topic item

(不要使用管道符 [|] 或惊叹号 [!]。)

在 Visual Basic 应用程序中,使用的是:

application|topic

惊叹号对于 topic 是隐含的。

接收端控件 为了给接收端控件设置 LinkTopic,要使用具有 application|topic 语法的字符串,如下:

application 是请求数据的应用程序的名字,通常是不带扩展名的可执行文件名-例如,Excel(对应 Microsoft Excel)。


管道字符(|,或字符代码 124)将应用程序与主题分开。


topic 是用在发送端应用程序中的基本数据的分组-例如,Microsoft Excel 中的工作表。
另外,仅就接收端控件而言,为了指定链接的 item 元素必须设置相关的 LinkItem 属性。一个单元引用,比如 R1C1,相当于 Microsoft Excel 工作表中的一个项。

发送端

窗体 为了给窗体设置 LinkTopic,要将 value 设置为一个适当的窗体标识符。当与该窗体建立 DDE 链接时,接收端应用程序将该字符串用作 topic 参数。虽然该字符串完全是为了发送端窗体在 Visual Basic 中设置 LinkTopic 的所需,但接收端应用程序也需要指定:

接收端应用程序使用的 application 元素,它或者是没有 .vbp 扩展名的 Visual Basic 工程文件名(如果正在 Visual Basic 开发环境中运行应用程序)或者是没有 .exe 扩展名的 Visual Basic 应用程序文件名(如果正以独立的可执行文件的形式运行应用程序)。App 对象的 EXEName 属性在 Visual Basic 代码中提供该字符串,除非文件名没有改变。(EXEName 总是返回磁盘上应用程序的实际文件名;DDE 总是使用在“工程属性”对话框中指定的原始的名字。)


接收端应用程序使用的 item 元素,它与发送端窗体上的为 Label、PictureBox 或 TextBox 控件的 Name 属性设置值对应。
下面的语法是一个例子,它是从 Microsoft Excel 到 Visual Basic 应用程序的一个有效引用:

=VizBasicApplication|FormN!TextBox1

在 Microsoft Excel 公式条中能够输入对接收端单元的该引用。

为了激活用 LinkTopic 设置的数据链接,为了指定想要的链接的类型应将 LinkMode 属性设置为适当的非零数值。一般来说,在设置 LinkTopic 之后应设置 LinkMode。对于接收端控件,LinkTopic 的改变将中断现存的链接并终止 DDE 对话。对于发送端窗体,LinkTopic 的改变将中断使用那个主题的所有接收端链接。由于这些原因,在改变 LinkTopic 之前总是先把 LinkMode 属性设置为 0。在接收端控件 LinkTopic 改变之后,必须再将 LinkMode 设置为1(自动),2(手动),或 3(通知)以便用新的主题建立一个对话。

注意 在设计时在“编辑”菜单上用“粘贴链接”命令设置一个永久性的数据链接,也会设置 LinkMode、LinkTopic 和 LinkItem 属性。这将创建一个与窗体一起保存的链接。每次加载窗体时,Visual Basic 就尝试重建该对话。
ryuginka 2004-04-20
  • 打赏
  • 举报
回复
MSDN里有详细说明啊,你去查查看吧

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧