曾经尝试在wincc中用vbs把归档导出到Excel中,虽然实现了,但如果有大量的数据那样导数据实在是太慢,后来想起万版曾经建议在Excle里将wincc的数据导入,于是在wincc.net上下了个例子但那个例子适用与wincc5,这里将代码贴出,请教高手教我如何修改以使之能适用与wincc6
该例子是一个Excel文件,使用vba编程实现外部数据导入
打开该例子会自动调用如下两个函数:
Public cnC As New ADODB.Connection
Public cnR As New ADODB.Connection
Public rs As New ADODB.Recordset
Public Sub GetWinCCDSNName()
Dim fs As s cripting.FileSystemObject, f As s cripting.TextStream
Dim l As Long
Set fs = New FileSystemObject
Set f = fs.OpenTextFile("C:\WinCCDSN.txt", ForReading, False)
With f
l = 0
While Not .AtEndOfStream
l = l + 1
Cells(6, 2).Formula = .ReadLine
Wend
.Close
End With
Set f = Nothing
Set fs = Nothing
End Sub
Public Sub ConnectToDB()
If cnC.State = 1 Then
cnC.Close
End If
If cnR.State = 1 Then
cnR.Close
End If
With Sheet1
.cmbArchivenames.Clear
.cmbArchiveTags.Clear
.cmbArchivenames.Value = ""
.cmbArchiveTags.Value = ""
End With
cnR.ConnectionString = "DSN=" & Sheet1.Range("B6") & "R;UID=dba;PWD=SQL"
cnR.Open
cnC.ConnectionString = "DSN=" & Sheet1.Range("B6") & ";UID=dba;PWD=SQL"
cnC.Open
Set rs = cnC.Execute("select archivname from pde#archives")
While Not rs.EOF
Sheet1.cmbArchivenames.AddItem rs(0)
rs.MoveNext
Wend
rs.Close
Exit Sub
End Sub
然后Excle中有两个combobox控件在他们的click事件中有如下代码:
Private Sub cmbArchivenames_Click()
On Error GoTo ErrTrap
Set rs = cnC.Execute("select varname from pde#tags")
cmbArchiveTags.Clear
While Not rs.EOF
Sheet1.cmbArchiveTags.AddItem rs(0)
rs.MoveNext
Wend
rs.Close
Exit Sub
ErrTrap:
If Err.Number = 3704 Then
MsgBox "No Connection To WinCC"
Else
MsgBox Err.Number
End If
End Sub
Private Sub cmbArchiveTags_Click()
On Error GoTo ErrTrap
Dim row As Integer
row = 20
Set rs = cnC.Execute("select t,v from pde#hd#" & cmbArchivenames.Value & "#" & cmbArchiveTags.Value & " order by t") '关键在这里执行不过去
Sheet1.Range("E:F").ClearContents
Sheet1.Range("E19") = "DateTime"
Sheet1.Range("F19") = "Value"
While Not rs.EOF
Sheet1.Cells(row, 5) = rs(0)
Sheet1.Cells(row, 6) = rs(1)
rs.MoveNext
row = row + 1
Wend
rs.Close
Exit Sub
ErrTrap:
If Err.Number = 3704 Then
MsgBox "No Connection To WinCC"
Else
MsgBox "Unknown Error" & Err.Number
End If
End Sub
请教高手能为我指点指点,谢谢。