作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。
标题 | 利用DDE在MS-EXCEL中制作工业报表 |
技术领域 | 工控机 |
行业 | |
简介 | 工业报表的设计有好多软件可以使用,但专业软件的操作和使用上或多或少有不尽人意之处。本文利用DDE将工业数据导出到EXCEL中,利用OFFICE中的EXCEL轻松进行工业数据处理。从而实现工业报表的设计。 |
内容 |
VB是常用的应用软件开发工具之一,在现在工业中有很多应用。但用VB程序处理工业数据,你可能会遇到麻烦,因为一旦报表格式发生变化,就得修改相应程序,给应用软件的维护工作带来极大的不便。本文将告诉你如何实现VB程序中工业数据导出到EXCEL中,利用OFFICE中的EXCEL轻松进行工业数据处理。从而实现工业报表的设计。 打开VB程序,添加控件如下表:
Private Sub Form_Load() ‘设置随机数种子 Randomize ‘设置标签 For I = 0 To 3 Label1(I) = "流量" & " " & I + 1 Next I For I = 4 To 7 Label1(I) = "料位 " " & I - 3 Next I For I = 8 To 11 Label1(I) = "压力" & " " & I - 7 Next I End Sub Private Sub Timer1_Timer() ‘用随机数模拟实时工业参数,每0.5秒刷新一次。 For I = 0 To 3 Text1(I) = Format(Rnd * (100 - 1), "####.##") + " t/H" Next I For I = 4 To 7 Text1(I) = Format(Rnd * (1000 - 1), "####.##") + " cm" Next I For I = 8 To 11 Text1(I) = Format(Rnd * (100 - 1), "####.##") + " kPa" Next I End Sub 现在。已经有了数据,接下来的工作就进入正题,通过DDE采集数值到EXCEL中。在:Private Sub CMDEXPORT_Click() 事件中,首先找到EXCEL的安装地址。正常安装EXCEL的地址在C:\program Files\Microsoft Office\OFFICE11\ 下,但并不是所有人都是典型安装。所以要判断一下: If Dir("C:\program Files\Microsoft Office\OFFICE11\Excel.exe") <> "" Then Z = Shell("C:\program Files\Microsoft Office\OFFICE11\Excel", 2) Else Cdlog1.ShowOpen fil = Cdlog1.FileName If fil <> "" Then On Error Exit sub ‘简单的出错处理 Z = Shell(Cdlog1.FileName, 2) Else Exit Sub End If End If
当然接下来就是要建立程序之间的DDE连接,在:Private Sub CMDEXPORT_Click() 事件中: For k = 0 To 11 If Label1(k).LinkMode = vbNone Then Label1(k).LinkTopic = "Excel|Sheet1" ‘新建工作表sheep1 Label1(k).LinkItem = "R" & k & "C1" Label1(k).LinkMode = vbLinkManual ' End If If Text1(k).LinkMode = vbNone Then Text1(k).LinkTopic = "Excel|Sheet1" Text1(k).LinkItem = "R" & k & "C2" Text1(k).LinkMode = vbLinkManual End If Next k For I = 0 To 11 Label1(I).LinkItem = "R" & I + 1 & "C1" '设置连接项目。 If I < 4 Then Label1(I).Caption = "流量" & " " & I + 1 ElseIf I < 8 Then Label1(I).Caption = "液位" & " " & I - 3 ElseIf I < 12 Then Label1(I).Caption = "压力" & " " & I - 7 End If Label1(I).LinkPoke '将值放入单元。 Text1(I).LinkItem = "R" & I + 1 & "C2" '设置连接项目。 Text1(I).LinkPoke '将值放入单元。 Next I On Error Resume Next ‘简单的出错处理 MsgBox "所有参数导出完毕!请将数据保存以前,不要重复点击“导出”按钮。", 64, "导出完毕!" End Sub 程序调试 好了,现在可以测试运行一下程序。
文本框内的数字0.5秒刷新一次,点击“导出到 EXCEL”,稍等片刻,你将会看到以下内容:
此时,在EXCEL中,已经新建了一张工作表,内容如下。剩下的工作相信大家都明白了。
总结 |