ABB banner26年4月
關注中國自動化產業發展的先行者!
2026中國自動化產業年會
2025工業安全大會
OICT公益講堂
當前位置:首頁 >> 案例 >> 案例首頁

案例頻道

利用DDE在MS-EXCEL中制作工業報表
  • 企業:控制網     領域:工控機    
  • 點擊數:3528     發布時間:2007-06-16 23:30:32
  • 分享到:
工業報表的設計有好多軟件可以使用,但專業軟件的操作和使用上或多或少有不盡人意之處。本文利用DDE將工業數據導出到EXCEL中,利用OFFICE中的EXCEL輕松進行工業數據處理。從而實現工業報表的設計。



引言

    工業報表的設計有好多軟件可以使用,但專業軟件的操作和使用上或多或少有不盡人意之處。如果可以將程序中的數據“導出到EXCEL”中,相信會給工作帶來不少的方便。



圖表 1

    VB是常用的應用軟件開發工具之一,在現在工業中有很多應用。但用VB程序處理工業數據,你可能會遇到麻煩,因為一旦報表格式發生變化,就得修改相應程序,給應用軟件的維護工作帶來極大的不便。本文將告訴你如何實現VB程序中工業數據導出到EXCEL中,利用OFFICE中的EXCEL輕松進行工業數據處理。從而實現工業報表的設計。

    由于VB與EXCEL分別屬于不同的應用系統,如何把它們有機地結合在一起,是一個值得我們研究的課題。今天我們要討論的就是利用DDE實現工業監控參數的輸出到EXCEL。

    DDE預備知識
 
    DDE是windows平臺上的一個完整的通信協議,它使應用程序能彼此交換數據和發送指令。
 
    DDE對話的內容是通過三個標識名來約定的:

1 應用程序名:它是進行DDE對話的雙方名稱。

2 主題:被討論的數據域。

3 項目:被討論的特定數據對象。

    設計過程

    打開VB程序,添加控件如下表:

    控件 CAPTION NAME 其他 作用

    Frame 工業參數采集 Frame1  控件容器

    Label數組 -- Label(0-11)  參數名稱

    Text數組 00 Text(0-11)  讀取參數

    按鈕導出 導出到 EXCEL CMDEXPORT  導出數據

    按鈕退出 退出 Command2  退出程序

    Timer --- Timer1 Interval =500 模擬數據

    公用對話框 -- CDLOG1  打開EXCEL



圖表 2


    
本文利用隨機數模擬工業參數。LabeL標簽上顯示變量參數名,Text文本框內顯示模擬的現場數據。其源程序如下:

    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



圖表 3

    當然接下來就是要建立程序之間的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

    程序調試

    好了,現在可以測試運行一下程序。



圖表 4

    文本框內的數字0.5秒刷新一次,點擊“導出到 EXCEL”,稍等片刻,你將會看到以下內容:



圖表 5

    此時,在EXCEL中,已經新建了一張工作表,內容如下。剩下的工作相信大家都明白了。



 圖表 6

總結
 
    本文只是通過一個簡單的例子,淺談一下“導出到EXCEL”的實現。旨在拋磚引玉,給大家共同探討。程序雖小,但有一定實用價值,讀者可加以引用,讓工業數據的處理更加簡便快捷。

參考文獻

1.Windows程序員使用指南(三)----OLE/DDE. [美]Jeffery Clark著,趙人任等譯.清華大學出版社,1999

2.MSDN Library Visual Studio 6.0. 微軟公司

熱點新聞

推薦產品

x
  • 在線反饋
1.我有以下需求:



2.詳細的需求:
姓名:
單位:
電話:
郵件:
欧美视频一区