博途WINCC用VB脚本读数据记录的变量,读的是最近一天的数据,读取不成功,有没有大神帮忙分析一下。代码如下:
Dim objExcelApp
Dim tagI
Dim tagshijian,sheetname
Dim x,y,z,i,j
Dim tagDSNName,LocalEndTime,UTCBeginTime,UTCEndTime,sVal,sPro,sDsn,sSer,sCon,conn,sSql,name
Dim oRs,oCom,m
sheetname="Sheet1"
On Error Resume Next
Dim ExcelApp,ExcelBook
Set ExcelApp = GetObject(,"Excel.Application")
If TypeName(ExcelApp) = "Application" Then
For Each ExcelBook In ExcelApp.WorkBooks
If ExcelBook.FullName = "F:\XText\SDJCNYDLZROXLS.xls" Then
ExcelApp.ActiveWorkbook.Save
ExcelApp.Workbooks.Close
ExcelApp.Quit
Set ExcelApp= Nothing
Exit For
End If
Next
End If
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible=True
objExcelApp.Workbooks.Open"F:\XText\SDJCNYDLZROXLS.xls"
objExcelApp.Worksheets(sheetname).Activate
Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")
tagDSNName.Read
tagshijian = Now
LocalEndTime = DateAdd("d",-1,tagshijian)
UTCBeginTime = DateAdd("h",-8,tagshijian)
UTCEndTime = DateAdd("h",-8,LocalEndTime)
UTCBeginTime = Year(tagshijian) & "-" & Month(tagshijian) & "-" & Day(tagshijian) & "-" & Hour(tagshijian) & ":" & Minute(tagshijian) & ":" & Second(tagshijian)
UTCEndTime = Year(UTCEndTime) & "-" & Month(UTCEndTime) & "-" & Day(UTCEndTime) & "-" & Hour(UTCEndTime) & ":" & Minute(UTCEndTime) & ":" & Second(UTCEndTime)
HMIRuntime.Trace "UTC Begin Time: " & UTCBeginTime & vbCrLf
HMIRuntime.Trace "UTC erd Time: " & UTCEndTime & vbCrLf
Set sVal = HMIRuntime.Tags("Sval")
sVal.Read
sPro = "Provider=WinCCOLEDBProvider.1;"
sDsn = "Catalog=" &tagDSNName.Value& ";"
sSer = "Data Source=.\WinCC"
sCon = sPro + sDsn + sSer
Set conn = CreateObject("ADODB.Connection")
conn.ConnetionString = sCon
conn.CursorLocation = 3
conn.Open
Set tagI = HMIRuntime.Tags("Tag_214")
tagI.Read
sSql = "Tag:R,('数据记录\"& tagI.Value &"'),'" & UTCBeginTime & "','" & UTCEndTime & "'"
sSql = sSql+"'order by Timestamp ASC','TimeStep=" & sVal.Value & ",1'"
HMIRuntime.Trace sSql
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.RecordCount
'If (m > 0) Then
oRs.MoveFirst
Dim k
k = 1
Do While(k < 10)
objExcelApp.Worksheets(sheetname).cells(k,2).value = GetLocalDate(oRs.Fields(1).value)
objExcelApp.Worksheets(sheetname).cells(k,3).value = oRs.Fields(2).value
oRs.MoveNext
k=k+1
Loop
oRs.Close
'End If
Set oRs = Nothing
conn.Close
Set conn = Nothing
Dim patch,filename
filename=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))&CStr(Hour(Now))&CStr(Minute(Now))&CStr(Second(Now))
patch= "F:\Text\" & filename & ".xls"
objExcelApp.ActiveWorkbook.SaveAs patch
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp= Nothing