用VBS实现WINCC的用户归档输出到EXCEL表格的方法和例
(2009-12-30 16:47:45)
用VBS实现WINCC的用户归档输出到EXCEL表格的方法和例子程序
求用VBS实现WINCC的用户归档输出到固定格式的EXCEL表格的方法和例子程序!我主要问题在SQL数据库的查询语句不会。
看见论坛里有关用VBS实现EXCEL的数据查询和导出,我现在想要完成如下功能:每分钟将数据归档,用户可以输入任意的时刻时间查询从任意时刻开始的之后每隔1小时的数据(有点像日报里的24个小时)。我现在对于VBS查询数据库的语句不懂,望大大赐教!谢谢
''SQL查询语句
Dim strc as string
strc = "provider=WinCCOLEDBProvider.1;catalog=CC_RebdI_09_06_22_10_38_35R;data source=ComputerName\WinCC"
''这个连接字符串可以在SQl2000中看到
看见论坛里有关用VBS实现EXCEL的数据查询和导出,我现在想要完成如下功能:每分钟将数据归档,用户可以输入任意的时刻时间查询从任意时刻开始的之后每隔1小时的数据(有点像日报里的24个小时)。我现在对于VBS查询数据库的语句不懂,望大大赐教!谢谢
''SQL查询语句
Dim strc as string
strc = "provider=WinCCOLEDBProvider.1;catalog=CC_RebdI_09_06_22_10_38_35R;data source=ComputerName\WinCC"
''这个连接字符串可以在SQl2000中看到
Dim cc1
Set cc1=CreateObject("tion")
cc1.ConnectionString=strc
cc1.CursorLocation=3
cc1.open
Dim rst As Object
Set rst = CreateObject("dset")
dim ssql as string
ssql = "Tag:R,'Archive_3\DB1DBD0','2009-7-29 00:00:00.0000','2009-7-29 23:59:59.999','timestep=3600,258'"
''Archive_3\I_DB1DBD0归档和变量
''2009-7-29 00:00:00.0000,2009-7-29 23:59:59.999时间段
''timestep=3600,258每阁多少秒拿一个数据(3600=1小时),258表示每个时间段取最后一个数据
rst.Open ssql, cc1
Set cc1=CreateObject("tion")
cc1.ConnectionString=strc
cc1.CursorLocation=3
cc1.open
Dim rst As Object
Set rst = CreateObject("dset")
dim ssql as string
ssql = "Tag:R,'Archive_3\DB1DBD0','2009-7-29 00:00:00.0000','2009-7-29 23:59:59.999','timestep=3600,258'"
''Archive_3\I_DB1DBD0归档和变量
''2009-7-29 00:00:00.0000,2009-7-29 23:59:59.999时间段
''timestep=3600,258每阁多少秒拿一个数据(3600=1小时),258表示每个时间段取最后一个数据
rst.Open ssql, cc1
''这样查出来的数据就是一天的每小时的数据
''对rst记录集处理就可以得到你要的数据
''对rst记录集处理就可以得到你要的数据
==========================
Function action
Dim objExcelApp
Dim i,TimeM,TimeNow,TimeS
Set TimeM=HMIRuntime.Tags("TimeM")
i=1+TimeM.Read
TimeNow=CStr(Year(Now))&"年"&CStr(Month(Now))&"月"&CStr(Day(Now))&"日"&CStr(Hour(Now))&"-
Dim objExcelApp
Dim i,TimeM,TimeNow,TimeS
Set TimeM=HMIRuntime.Tags("TimeM")
i=1+TimeM.Read
TimeNow=CStr(Year(Now))&"年"&CStr(Month(Now))&"月"&CStr(Day(Now))&"日"&CStr(Hour(Now))&"-
"&CStr(Minute(Now))&":"&CStr(Second(Now))
TimeS=Second(Now)
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = False
objExcelApp.Workbooks.Open"E:\ExcelTest.xls"
objExcelApp.Cells(i, 2).Value =123.47
objExcelApp.Cells(i, 1).Value = TimeNow
objExcelApp.DisplayAlerts = False
TimeS=Second(Now)
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = False
objExcelApp.Workbooks.Open"E:\ExcelTest.xls"
objExcelApp.Cells(i, 2).Value =123.47
objExcelApp.Cells(i, 1).Value = TimeNow
objExcelApp.DisplayAlerts = False
objExcelApp.ActiveWorkbook.Save
objExcelApp.Workbooks.Close
objExcelApp.quit
Set objExcelApp =Nothing
End Function
以上代码用于往指定的Excel表格中写数据。该动作每分钟触发一次,依次往表格中写入60个数据,当进入下一个小时后,大概是因为表格中已存在数据所以在写入前会弹出对话框提醒是否覆盖还是另存,加入objExcelApp.DisplayAlerts = False语句后就不存在这个问题了,对此要谢谢谢谢版主:城外之人。
WINCC与EXCEL数据交换 hjyhjy,2010-11-09 16:55:28
WINCC与EXCEL数据交换
代码
Sub X6309X94AE13X0000X0000_OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim objExcelApp
Set objExcelApp=createobject("excel.applcation")
objExcelApp.Visible=True
objExcelApp.Workbooks.Open"E:\a.xls"
&lls(4,3).Value=ScreenItems("b").Outputvalue
objExcelApp.ActiveWorkbook.Save
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp=Nothing
WINCC与EXCEL数据交换
代码
Sub X6309X94AE13X0000X0000_OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim objExcelApp
Set objExcelApp=createobject("excel.applcation")
objExcelApp.Visible=True
objExcelApp.Workbooks.Open"E:\a.xls"
&lls(4,3).Value=ScreenItems("b").Outputvalue
objExcelApp.ActiveWorkbook.Save
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp=Nothing
End Sub
getsavefilename谢谢,已经解决,单词写错了
lls(4,3).Value=ScreenItems("b").Outputvalue
这里也有问题
getsavefilename谢谢,已经解决,单词写错了
lls(4,3).Value=ScreenItems("b").Outputvalue
这里也有问题
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论