最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

使用VB将变量记录中的数据写入EXCEL

来源:动视网 责编:小OO 时间:2025-09-24 15:03:54
文档

使用VB将变量记录中的数据写入EXCEL

使用VBS读取变量归档数据到EXCEL1、创建变量。过程归档变量、查询时间变量(一个起始时间、一个结束时间、时间间隔)过程变量为模拟量,其实时间和结束时间是文本变量8位字符集(时间的格式是XXXX-XX-XXXX:XX:XX),时间间隔位10进制数(单位秒)2、创建归档。变量记录中选择好要记录的过程变量,设置好归档的时间等。3、创建EXCEL表格模版,XXX.XLSX.4、界面上3个输入输入输出域(一个起始时间,一个结束时间,一个时间间隔),一个查询并生成EXCEL表格的按钮5、脚本主要分2块
推荐度:
导读使用VBS读取变量归档数据到EXCEL1、创建变量。过程归档变量、查询时间变量(一个起始时间、一个结束时间、时间间隔)过程变量为模拟量,其实时间和结束时间是文本变量8位字符集(时间的格式是XXXX-XX-XXXX:XX:XX),时间间隔位10进制数(单位秒)2、创建归档。变量记录中选择好要记录的过程变量,设置好归档的时间等。3、创建EXCEL表格模版,XXX.XLSX.4、界面上3个输入输入输出域(一个起始时间,一个结束时间,一个时间间隔),一个查询并生成EXCEL表格的按钮5、脚本主要分2块
使用VBS读取变量归档数据到EXCEL

1、创建变量。过程归档变量、查询时间变量(一个起始时间、一个结束时间、时间间隔)

过程变量为模拟量,其实时间和结束时间是文本变量8位字符集(时间的格式是XXXX-XX-XX XX:XX:XX),时间间隔位10进制数(单位秒)

2、创建归档。变量记录中选择好要记录的过程变量,设置好归档的时间等。

3、创建EXCEL表格模版,XXX.XLSX.

4、界面上3个输入输入输出域(一个起始时间,一个结束时间,一个时间间隔),一个查询并生成EXCEL表格的按钮

5、脚本主要分2块。1是时间的转换,WINCC归档使用的时间是UTC(国际协调时间),所以需要进行时间的转换。2是查询并生成EXCEL表格的脚本。

6、过程值归档的记录结构如下:

脚本见文本文档

'查询按钮中的代码(按钮)

Sub OnLButtonUp(ByVal Item, ByVal Flags, ByVal x, ByVal y)   

Dim sPro,sDsn,sSer,sCon,conn,sSql,oRs,oCom

Dim tagDSNName

Dim m,i

Dim LocalBeginTime, LocalEndTime,UTCBeginTime, UTCEndTime,sVal

Dim objExcelApp,objExcelBook,objExcelSheet,sheetname

item.Enabled = False

    On Error Resume Next 

    sheetname="Sheet1"

    Set objExcelApp = CreateObject("Excel.Application")

        objExcelApp.Visible = False

        objExcelApp.Workbooks.Open "D:\\WinCCWriteExcel\\abc.xlsx"

        objExcelApp.Worksheets(sheetname).Activate

    Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")

        tagDSNName.Read 

    Set LocalBeginTime = HMIRuntime.Tags("strBeginTime")

        LocalBeginTime.Read 

    Set LocalEndTime = HMIRuntime.Tags("strEndTime")

        LocalEndTime.Read

        UTCBeginTime = DateAdd("h" ,-8,LocalBeginTime.Value)

        UTCEndTime= DateAdd("h" ,-8,LocalEndTime.Value)

        UTCBeginTime = Year(UTCBeginTime) & "-" & Month(UTCBeginTime) & "-" & Day(UTCBeginTime) & " " & Hour(UTCBeginTime) & ":" & Minute(UTCBeginTime) & ":" & Second(UTCBeginTime)

        UTCEndTime = Year(UTCEndTime) & "-" & Month(UTCEndTime) & "-" & Day(UTCEndTime) & " " & Hour(UTCEndTime) & ":" & Minute(UTCEndTime) & ":" & Second(UTCEndTime)

        HMIRuntime.Trace "UTC Begin Time: " & UTCBeginTime & vbCrLf

        HMIRuntime.Trace "UTC end 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.ConnectionString = sCon

        conn.CursorLocation = 3

        conn.Open

    sSql = "Tag:R,('PVArchive\\NewTag'),'" & UTCBeginTime & "','" & UTCEndTime & "',"

    sSql=sSql+"'order by Timestamp ASC','TimeStep=" & sVal.Value & ",1'"

    MsgBox 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

         objExcelApp.Worksheets(sheetname).cells(2,1).value=oRs.Fields(0).Name

         objExcelApp.Worksheets(sheetname).cells(2,2).value=oRs.Fields(1).Name

         objExcelApp.Worksheets(sheetname).cells(2,3).value=oRs.Fields(2).Name

         objExcelApp.Worksheets(sheetname).cells(2,4).value=oRs.Fields(3).Name

         objExcelApp.Worksheets(sheetname).cells(2,5).value=oRs.Fields(4).Name

        oRs.MoveFirst  

        i=3  

        Do While Not oRs.EOF                        

            objExcelApp.Worksheets(sheetname).cells(i,1).value= oRs.Fields(0).Value

            objExcelApp.Worksheets(sheetname).cells(i,2).value= GetLocalDate(oRs.Fields(1).Value) 

            objExcelApp.Worksheets(sheetname).cells(i,3).value= oRs.Fields(2).Value

            objExcelApp.Worksheets(sheetname).cells(i,4).value= oRs.Fields(3).Value

            objExcelApp.Worksheets(sheetname).cells(i,5).value= oRs.Fields(4).Value

            oRs.MoveNext

            i=i+1

        Loop

        oRs.Close

    Else

        MsgBox "没有所需数据……"

        item.Enabled = True

        Set oRs = Nothing

        conn.Close

        Set conn = Nothing

        objExcelApp.Workbooks.Close

        objExcelApp.Quit

        Set objExcelApp= Nothing

        Exit Sub

    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= "d:\\"&filename&"demo.xlsx"    

    objExcelApp.ActiveWorkbook.SaveAs patch

    objExcelApp.Workbooks.Close

    objExcelApp.Quit

    Set objExcelApp= Nothing

    MsgBox "成功生成数据文件!"

    item.Enabled = True

End Sub

时间转换脚本 (全局)

Function GetLocalDate(vtDate)

Dim DoY

Dim dso

Dim dwi

Dim strComputer, objWMIService, colItems, objItem

Dim TimeZone

Dim vtDateLocalDate

strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\\\" & strComputer & "\\root\\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_TimeZone")

For Each objItem In colItems

    TimeZone = objItem.Bias / 60

Next

If IsDate(vtDate) <> True Then

  IS_GetLocalDate = False

  Exit Function

End If

DoY = DatePart("y", vtDate)

dso = DatePart("y", "31.03") - DatePart("w", "31.03") + 1

dwi = DatePart("y", "31.10") - DatePart("w", "31.10") + 1

If DoY >= dso And DoY < dwi Then

  TimeZone = TimeZone + 1

End If

vtDateLocalDate = DateAdd("h", 1 * TimeZone, vtDate)

GetLocalDate = vtDateLocalDate

End Function

实验成功后将在指定的位置创建EXCEL表格,表格内容如下:

文档

使用VB将变量记录中的数据写入EXCEL

使用VBS读取变量归档数据到EXCEL1、创建变量。过程归档变量、查询时间变量(一个起始时间、一个结束时间、时间间隔)过程变量为模拟量,其实时间和结束时间是文本变量8位字符集(时间的格式是XXXX-XX-XXXX:XX:XX),时间间隔位10进制数(单位秒)2、创建归档。变量记录中选择好要记录的过程变量,设置好归档的时间等。3、创建EXCEL表格模版,XXX.XLSX.4、界面上3个输入输入输出域(一个起始时间,一个结束时间,一个时间间隔),一个查询并生成EXCEL表格的按钮5、脚本主要分2块
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top