<b id="nqvhe"><source id="nqvhe"><menu id="nqvhe"></menu></source></b>

    1. <source id="nqvhe"></source><xmp id="nqvhe"></xmp>
      1. <b id="nqvhe"></b>
        <u id="nqvhe"></u>
      2. <b id="nqvhe"><address id="nqvhe"><ol id="nqvhe"></ol></address></b>
      3. <source id="nqvhe"></source>
        <xmp id="nqvhe"><video id="nqvhe"></video></xmp>
          <b id="nqvhe"></b>
          <u id="nqvhe"></u>
        1. 1
          關注中國自動化產業發展的先行者!
          2024
          2024中國自動化產業年會
          2023年工業安全大會
          OICT公益講堂
          當前位置:首頁 >> 案例 >> 案例首頁

          案例頻道

          利用DDE在MS-EXCEL中制作工業報表
          • 企業:控制網     領域:工控機    
          • 點擊數:1927     發布時間: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.詳細的需求:
          姓名:
          單位:
          電話:
          郵件:

            <b id="nqvhe"><source id="nqvhe"><menu id="nqvhe"></menu></source></b>

            1. <source id="nqvhe"></source><xmp id="nqvhe"></xmp>
              1. <b id="nqvhe"></b>
                <u id="nqvhe"></u>
              2. <b id="nqvhe"><address id="nqvhe"><ol id="nqvhe"></ol></address></b>
              3. <source id="nqvhe"></source>
                <xmp id="nqvhe"><video id="nqvhe"></video></xmp>
                  <b id="nqvhe"></b>
                  <u id="nqvhe"></u>
                1. 国产精品高清视亚洲精品