下面把日报、月报、年报的具体输出方式叙述一下:
日报:在wincc的图形编辑器里制作日报画面:画面中放置一日期的输入输出域,再放置一个按钮,按钮文本:“导出到EXCEL”按钮代码如下:
Sub OnClick(ByVal Item)
Dim objExcelApp
Dim i,n,tagstr
Dim writeRiQi,ksrq,jsrq,max
Dim baobiao,jls,tabname
Dim blm,sj,zhi
' Dim jcyl_a,cgyl_a,yw_a,dqyl_a,jcpjwd_a,cgpjwd_s_a,cgpjwd_x_a
' Dim jcyl_b,cgyl_b,yw_b,dqyl_b,jcpjwd_b,cgpjwd_s_b,cgpjwd_x_b
' Dim tank_A_kg,tank_A_Q,tank_B_kg,tank_B_Q'
Dim rb(17,23) '17表示18列数据 23表示24小时即24行
Dim TagNameSerial,TagNameArray
'欲显示在EXCEL中的变量名序列
TagNameSerial="AI_HY1_LGh;AI_HY2_LGh;AI_GF1_LGh;AI_GF2_LGh;AI_LF1_LGh;AI_LF2_LGh;AI_BY1_LGh;AI_GZ1_LGh;AI_RL1_LGh;AI_RL2_LGh;AI_SH1_LGh;AI_SH2_LGh;AI_SC1_LGh"
TagNameArray=Split(TagNameSerial,";")
max=UBound(TagNameArray)
' For i=0 To 17
' For n=0 To 23
' rb(i,n)="-"
' Next
' Next
ksrq=GetTag("ksrq")
If IsDate(ksrq)=False Then
'MsgBox "err ksrq =" & ksrq
ksrq=DateValue(Date)
SetTag "ksrq",ksrq
End If
jsrq=DateValue(ksrq)+1
'MsgBox jsrq
db_open
tabname="UA#ZDGD"
sql="SELECT * FROM " & tabname
'0点起显示
sql=sql & " WHERE (RQ = N'"&ksrq&"') "
'以每天9点为界显示
' sql=sql & " WHERE (RQ = N'"&ksrq&"') AND ({ fn HOUR(SJ) } >= 9) OR "
' sql=sql & " (RQ = N'"&jsrq&"') AND ({ fn HOUR(SJ) } < 9) "
sql=sql & " ORDER BY RQ DESC, SJ DESC"
'MsgBox sql
'writeRiQi="&ksrq="&ksrq&"&jsrq="&jsrq
Set rs=CreateObject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof and not rs.bof then
rs.MoveFirst
Do While Not rs.EOF
'sj= Hour(rs("LastAccess") )
sj= Hour(rs("sj") )
blm=rs("Tag_name")
zhi=rs("ZHI")
'MsgBox sj & blm & zhi
i=0
for i=0 to max
If blm=TagNameArray(i) Then
rb(i,sj)=FormatNumber(zhi,2)
End If
Next
rs.movenext
loop
End If
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = True
objExcelApp.Workbooks.Open "F:\india\wincc\DayReport.xls"
'9点为界的赋值
' For i=0 To 17
' For n=9 To 23
' objExcelApp.Cells(n-4, 2+i).Value = rb(i,n)
' Next
' Next
' For i=0 To 17
' For n=0 To 8
' objExcelApp.Cells(n+20, 2+i).Value = rb(i,n)
' Next
' Next
'0点正常赋值
For i=0 To 17
For n=0 To 23
objExcelApp.Cells(n+5, 2+i).Value = rb(i,n)
Next
Next
'特殊单元格赋值
objExcelApp.Cells(1, 2).Value = ksrq
objExcelApp.Cells(1, 5).Value = WeekdayRturn(Weekday(ksrq))
' objExcelApp.Cells(32, 1).Value = tank_A_kg
' objExcelApp.Cells(32, 2).Value = tank_A_Q
' objExcelApp.Cells(32, 3).Value = tank_B_kg
' objExcelApp.Cells(32, 4).Value = tank_B_Q
' objExcelApp.ActiveWorkbook.Save
End Sub
管理员注:本帖已被纳入此次探讨发帖整理之方案汇总,请
点此详阅