定时采集仪器数据并自动导入EXCEL的问题
在论坛上看过一段时间了,现在做一个仪器数据采集的程序,需要将定时采集的数据自动导入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
…… ……
希望大侠给予指点,谢谢!!
[解决办法]
偶的一个例子,数据采集的显示函数里增加的把数据添加到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