当前位置: 主页 > PLC控制

将数据存储在生成的EXCEL表中

按照例子我可以实现:
1、创建一个excel表,将变量归档数据写进去
2、创建一个与io域中输入日期为名称的excel表
但是我无法将上面两个合起来,及点击一次按钮,创建一个与当前IO域值为名称的excel表,并且将数据写在这个表中。
我现在只能创建表,然后表里面是空的。
下面是代码


SubOnLButtonDown(ByValItem,ByValFlags,ByValx,ByValy)
DimxlsApp
DimsDsn
DimsSer
DimsCon
DimsSql
Dimconn
DimoRs
DimoCom
DimsPro
Dimm,n,s,x_f,x_n,l
Dima,b,c
DimTimeFrom,TimeTo
Dimpatch,Day


””””””’选择读取归档变量的时间区间

SetTimeFrom=HMIRuntime.Tags("DayFrom")
TimeFrom.Read

SetTimeTo=HMIRuntime.Tags("DayTo")
TimeTo.Read


”””””””创建excel表路径
Day=HMIRuntime.Tags("Day").Read

patch="e:\"&Day&".xls"


”””””””例子内容

sPro="Provider=winccOLEDBProvider.1;"
sDsn="Catalog=CC_ceepc_cs_14_01_15_06_41_10R;"
sSer="DatASource=CEEPC-33\WINCC"
sCon=sPro+sDsn+sSer

sSql="Tag:R,(‘ProcessValueArchive\氨气流量’;’ProcessValueArchive\频率反馈1′;’ProcessValueArchive\频率反馈2′;’ProcessValueArchive\出口气压力’;’ProcessValueArchive\出口水压力’;’ProcessValueArchive\储罐温度’;’ProcessValueArchive\储罐液位’),’"+TimeFrom.Value+"’,’"+TimeTo.Value+"’"

MsgBox"Openwith:"&vbCr&sCon&vbCr&sSql&vbCr

Setconn=CreateObject("ADODB.Connection")
conn.ConnectionSTring=sCon
conn.CursorLocation=3
conn.Open
SetoRs=CreateObject("ADODB.Recordset")
SetoCom=CreateObject("ADODB.Command")
oCom.CommandType=1
SetoCom.ActiveConnection=conn
oCom.CommandText=sSql
SetoRs=oCom.Execute
m=oRs.Fields.Count
x_f=oRs.RecordCount/7
SetxlsApp=CreateObject("Excel.Application")
‘xlsApp.DisplayAleRTs=True
xlsApp.Visible=True
‘xlsApp.Workbooks.Open"C:\Users\Auser\Desktop\ss1.xls"

”””””’创建新excel表我最担心这里有问题
xlsApp.Workbooks.Add
xlsApp.Savepatch
xlsApp.Workbooks.Openpatch
‘xlsApp.Workbooks.Open"C:\Users\Auser\Desktop\ss1.xls"


””””””””’例子内容
If(m>0)Then
oRs.MoveFirst
n=0
l=1

xlsApp.Cells(1,1).Value="时间"
xlsApp.Cells(1,2).Value="氨水流量m3/h"
xlsApp.Cells(1,3).Value="频率反馈1Hz"
xlsApp.Cells(1,4).Value="频率反馈2Hz"
xlsApp.Cells(1,5).Value="出口气压Mpa"
xlsApp.Cells(1,6).Value="出口水压Mpa"
xlsApp.Cells(1,7).Value="储罐液位m"
xlsApp.Cells(1,8).Value="储罐温度℃"

DoWhileNotoRs.EOF

x_n=nModx_f
l=Int(n/x_f)

xlsApp.Cells(x_n+2,1).Value=oRs(1)‘时间
xlsApp.Cells(x_n+2,(l+2)).Value=oRs(2)‘值
n=n+1
oRs.MoveNext
Loop


””””””””’例子内容这里是否和上面创建表的语句有冲突
xlsApp.ActiveWorkBook.Save
xlsApp.Workbooks.Close
xlsApp.Quit
SetxlsApp=Nothing
EndIf
oRs.Close
SetoRs=Nothing
conn.Close
Setconn=Nothing
EndSub

最佳答案

第一:请先尝试查询一个变量的值。
第二:你要保证你的时间部分的值是正确的,也就是说做个消息框看看弹出的时间是否正确,是否真的读到了你想要的时间。
第三:wincc的变量归档的时间格式不是我们的北京时间,我没有看到你的时间转换代码,而这个代码是必须的。
第四:你创建了两个excel表格,我不知道这有什么作用,通常是创建一个模板,然后把数据写进去按照你想要的名字另存即可。
第五:在你操作电子表格的时候需要指定你要操作哪一个sheet,我再代码里没有找到。
还有两点就是不太重要的,其一你的代码写的没有顺序,应该把相同功能的代码尽量放在一起,方便查找问题。其二,我怀疑你这个代码是从技术文档上找的,不要轻易相信,因为技术文档也有可能出错。
以上内容有可能有疏漏,说错了请见谅。

VBS代码读取wincc变量归档,每天保存一个电子表格。利用控件查询显示所需日期的电子表格内容,并支持在wincc界面编辑报表,更改数据等等。每天固定24条数据,如果相应小时点数没有数据,则用#填充。
请参考优酷视频
htTP://v.youku.com/v_show/id_XNzA2MjY0MzEy.html
QQ1305567706小董

提问者对于答案的评价:
谢谢,先不弄了,忙过这阵子再说

最佳答案作者回复:
好的有需要随时联系qq2606352062即可

  • 关注微信

猜你喜欢

微信公众号