找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim xlsApp
Dim sDsn
Dim sSer
Dim sCon
Dim sSql
Dim conn
Dim oRs
Dim oCom
Dim sPro
Dim m, n, s, x_f, x_n, l
Dim a, b, c
Dim TimeFrom, TimeTo
Dim patch,Day
'''''''''''''选择读取归档变量的时间区间
Set TimeFrom = HMIRuntime.Tags("DayFrom")
TimeFrom.Read
Set TimeTo = 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 = "Data Source=CEEPC-33\WINCC"
sCon = sPro + sDsn + sSer
sSql = "Tag:R,('ProcessValueArchive\氨气流量';'ProcessValueArchive\频率反馈1';'ProcessValueArchive\频率反馈2';'ProcessValueArchive\出口气压力';'ProcessValueArchive\出口水压力';'ProcessValueArchive\储罐温度';'ProcessValueArchive\储罐液位'),'" + TimeFrom.Value + "','" + TimeTo.Value + "'"
MsgBox "Open with:" & vbCr & sCon & vbCr & sSql & vbCr
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = sCon
conn.CursorLocation = 3
conn.Open
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1
Set oCom.ActiveConnection = conn
oCom.CommandText = sSql
Set oRs = oCom.Execute
m = oRs.Fields.Count
x_f = oRs.RecordCount/7
Set xlsApp = CreateObject("Excel.Application")
'xlsApp.DisplayAlerts = True
xlsApp.Visible = True
'xlsApp.Workbooks.Open "C:\Users\Auser\Desktop\ss1.xls"
'''''''''''创建新excel表 我最担心这里有问题
xlsApp.Workbooks.Add
xlsApp.Save patch
xlsApp.Workbooks.Open patch
'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 = "频率反馈1 Hz"
xlsApp.Cells(1, 4).Value = "频率反馈2 Hz"
xlsApp.Cells(1, 5).Value = "出口气压 Mpa"
xlsApp.Cells(1, 6).Value = "出口水压 Mpa"
xlsApp.Cells(1, 7).Value = "储罐液位 m"
xlsApp.Cells(1, 8).Value = "储罐温度 ℃"
Do While Not oRs.EOF
x_n = n Mod x_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
Set xlsApp = Nothing
End If
oRs.Close
Set oRs = Nothing
conn.Close
Set conn = Nothing
End Sub
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
第一:请先尝试查询一个变量的值。
第二:你要保证你的时间部分的值是正确的,也就是说做个消息框看看弹出的时间是否正确,是否真的读到了你想要的时间。
第三:wincc的变量归档的时间格式不是我们的北京时间,我没有看到你的时间转换代码,而这个代码是必须的。
第四:你创建了两个excel表格,我不知道这有什么作用,通常是创建一个模板,然后把数据写进去按照你想要的名字另存即可。
第五:在你操作电子表格的时候需要指定你要操作哪一个sheet,我再代码里没有找到。
还有两点就是不太重要的,其一你的代码写的没有顺序,应该把相同功能的代码尽量放在一起,方便查找问题。其二,我怀疑你这个代码是从技术文档上找的,不要轻易相信,因为技术文档也有可能出错。
以上内容有可能有疏漏,说错了请见谅。
VBS代码读取wincc变量归档,每天保存一个电子表格。利用控件查询显示所需日期的电子表格内容,并支持在wincc界面编辑报表,更改数据等等。每天固定24条数据,如果相应小时点数没有数据,则用#填充。
请参考优酷视频
http://v.youku.com/v_show/id_XNzA2MjY0MzEy.html
QQ1305567706 小董
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
专家置评
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城