在论坛上看过一段时间了,现在做一个仪器数据采集的程序,需要将定时采集的数据自动导入EXCEL中。    比如EXCEL表格中第一列是所采集数据,第二列对应的是每个数据采集的时间。现在已经能够成功调用EXCEL表格,但是就是无法实现数据的自动导入,比如我采集的数据实时显示在TEXT1.TEXT中,定时器的interval设定为500,则0.5秒对数据进行一次采集并实时显示,就希望同时数据能够自动保存在EXCEl里面,特别是自动这个功能,同时记录下对应的时间。
    我如果使用timer调用时,每次采集数据时都会打开一个EXCEL,或者要不停的按采集按钮才行,但每次都只是在同一个单元格里刷新而已,很郁闷……使用xlsheett Cells(row,1)="" 如何写程序才能实现数据和时间对应,并且自动逐个保存呢?比如:数据     时间(s)
数值1     0
数值2    0.5
数值3     1
数值4    1.5
……     ……  希望大侠给予指点,谢谢!!

解决方案 »

  1.   

    你把开EXCEL的代码写在form_Load中
      

  2.   

    恩,我把定义EXCEL的代码和数据写入的代码分开写了,但是如何实现逐个数据写入的功能呢?还有对应的时间
      

  3.   

    偶有个例子,是买的数据采集卡时带的驱动,偶自己加的数据保存到excel表格里
      

  4.   

    偶的一个例子,数据采集的显示函数里增加的把数据添加到excel的文件里的方法!!!供楼主参考!Sub ShowDigitProc()
        Screen.MousePointer = vbHourglass                '''''''''''表示等待状态
        Dim xls As Object                                                         'Excel格式输出数据
        Set xls = CreateObject("Excel.Application")
        xls.Visible = True
        xls.Caption = "Four Signals"
        Set xlbook = xls.Workbooks.Add                                             'Excel格式输出数据
        Dim Row As Integer
        Dim Col As Integer
        Dim i, j As Integer
        Dim channelpot As Integer
        Dim ch0(511), ch1(511), ch2(511), ch3(511) As Single
      
        channelpot = (4096 - (4096 Mod ChannelCount)) '原型为:channelpot = (8192 - (8192 Mod ChannelCount))
        For i = 0 To ChannelCount - 1
            s$ = s$ + "|   CH" + Str$(Hist_Header.FirstChannel + i)
        Next
        Grid.FormatString = s$
        s$ = ";"
        
         For i = 0 + m_Offset To ((channelpot / ChannelCount) - 1 + m_Offset)
        s$ = s$ + "|" + Str$(i)
        Next
         Grid.FormatString = s$
          'Open "D:\05.txt" For Output As #1'                                         '文本格式读出数据
        For Row = 1 To ((4096 - (4096 Mod ChannelCount)) / ChannelCount)
            Col = 0                                       ''''''''''''''''''''''''''可以存取数据了 !!!!!!!!!!!!!
                Grid.TextMatrix(Row, Col + 1) = Format(((((InRegionUser((Row - 1) * ChannelCount + Col) Xor &H2000) And &H3FFF) - &H2000) * PoltvalueChange) / 1000, "#.00000")
                ch0(511) = Grid.TextMatrix(Row, Col + 1)
                ch0(511) = Val(ch0(511))
                Text3.Text = ch0(511)
                xls.Cells(Row, 1).Value = ch0(511)                                    'Excel格式输出数据
            Col = 1                                         ''''''''''''''''''''''''''可以存取数据了 !!!!!!!!!!!!!
                Grid.TextMatrix(Row, Col + 1) = Format(((((InRegionUser((Row - 1) * ChannelCount + Col) Xor &H2000) And &H3FFF) - &H2000) * PoltvalueChange) / 1000, "#.00000")
                ch1(511) = Grid.TextMatrix(Row, Col + 1)
                ch1(511) = Val(ch1(511))
                Text4.Text = ch1(511)
                xls.Cells(Row, 2).Value = ch1(511)                                    'Excel格式输出数据
            Col = 2                                        ''''''''''''''''''''''''''可以存取数据了 !!!!!!!!!!!!!
                Grid.TextMatrix(Row, Col + 1) = Format(((((InRegionUser((Row - 1) * ChannelCount + Col) Xor &H2000) And &H3FFF) - &H2000) * PoltvalueChange) / 1000, "#.00000")
                ch2(511) = Grid.TextMatrix(Row, Col + 1)
                ch2(511) = Val(ch2(511))
                Text5.Text = ch2(511)
                xls.Cells(Row, 3).Value = ch2(511)                                 'Excel格式输出数据
           Col = 3                                        ''''''''''''''''''''''''''可以存取数据了 !!!!!!!!!!!!!
              Grid.TextMatrix(Row, Col + 1) = Format(((((InRegionUser((Row - 1) * ChannelCount + Col) Xor &H2000) And &H3FFF) - &H2000) * PoltvalueChange) / 1000, "#.00000")
               ch3(511) = Grid.TextMatrix(Row, Col + 1)
               Text6.Text = ch3(511)
               xls.Cells(Row, 4).Value = ch3(511)                                   'Excel格式输出数据
          'Write #1, ch0(511), ch1(511), ch2(511), ch3(511)'                       '文本格式读出数据
        'Draw_Click
       'Picture2.PSet (ch0(511), ch2(511)), RGB(255, 0, 255)
           Next
           'Close #1'                                                             '文本格式读出数据
        Screen.MousePointer = vbDefault                      '''''''''''''表示形状由对象确定
    End Sub