我用下面的脚本做的实时数据到EXCEL.但是一点反应都没有,连另存的D盘EXCEL目录都没有生成!希望大侠们能帮我看看问题出在哪里!谢谢!
‘定义变量
Dim objExcelApp, objExcelbook,objExcelSheet
Dim tagshijian,sheetname,username,zhushi
Dim tagday
Dim tag1gongyeshui, tag2shenghuoshui,tag3tuoyanshui, tag4zhengqi,tag5h2so4, tag6hno3,tag7hf,tag8zaishengsuan,tag9naoh
Dim i,j
Dim msg
‘ 声明
Set tag1gongyeshui=HMIRuntime.Tags("TE_0102")
Set tag2shenghuoshui=HMIRuntime.Tags("TE_0106")
Set tag3tuoyanshui=HMIRuntime.Tags("LT_0101")
Set tag4zhengqi=HMIRuntime.Tags("PT_0102")
Set tag5h2so4=HMIRuntime.Tags("TE_0105")
Set tag6hno3=HMIRuntime.Tags("LT_0103")
Set tag7hf=HMIRuntime.Tags("PT_0302")
Set tag8zaishengsuan=HMIRuntime.Tags("PT_0304")
Set tag9naoh=HMIRuntime.Tags("PT_0306")
msg="ok"
sheetname="sheet1"
‘创建对象
Set objExcelApp=CreateObject("Excel.Application")
objExcelApp.visible=True
objExcelApp.workbooks.open"e:\wincc_1118_120311\ribaobiao\日报表.xls"
objExcelApp.worksheets(sheetname).activate
‘清除模版数据
With objExcelApp.worksheets(sheetname)
For i=4 To 27
For j=1 To 10
.cells(i,j)=Null
Next
Next
End With
‘实时数据写入
tagshijian=Now
objExcelApp.Worksheets(sheetname).cells(1,9).value=tagshijian
For i=4 To 27
With objExcelApp.worksheets(sheetname)
.cells(i,1).value=tagshijian
tag1gongyeshui.read
.cells(i,2).value=tag1gongyeshui.value
tag2shenghuoshui.read
.cells(i,3).value=tag2shenghuoshui.value
tag3tuoyanshui.read
.cells(i,4).value=tag3tuoyanshui.value
tag4zhengqi.read
.cells(i,5).value=tag4zhengqi.value
tag5h2so4.read
.cells(i,6).value=tag5h2so4.value
tag6hno3.read
.cells(i,7).value=tag6hno3.value
tag7hf.read
.cells(i,8).value=tag7hf.value
tag8zaishengsuan.read
.cells(i,9).value=tag8zaishengsuan.value
tag9naoh.read
.cells(i,10).value=tag9naoh.value
End With
Next
MsgBox msg
‘关闭保存
Dim patch,filename
filename= CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))
patch="d:\baobiao\"&filename&"DEMO.xls"
objExcelApp.activeworkbook.saveAs patch
objExcelApp.workbooks.close
objExcelApp.Quit
Set objExcelApp=Nothing
一直没查到问题在哪,如果这样能实现实时报表,那么该怎么实现日报表呢?这个问题额外加分!感激不尽!
问题补充:
日报表只要24小时每小时采集一次数据,然后每天自动保存到EXCEL就可以了!
最佳答案
我把你的程序给你简单的优化了一下,你试一试吧
”定义变量
Dim objExcelApp, objExcelbook
Dim tag1”这个在内部变量里建立,是行数变量,初始值设定为4
Set tag1=HMIRuntime.Tags("tag1")
tag1.Read
”创建对象
Set objExcelApp=CreateObject("Excel.Application")
objExcelApp.visible=True
objExcelApp.workbooks.open"E:\wincc_1118_120311/ribaobiao/日报表.xls" ”这个路径里的文件名字用英文的,不要用中文的
”实时数据写入
objExcelApp.Worksheets.cells(1,9).value=Day(Now)
objExcelApp.cells(tag1,1).valuE=HMIRuntime.Tags("TE_0102").Read
tag1.Value=tag1.Read+1
If tag1.Value>27 Then
tag1.Write4
”另存为
objExcelApp.activeworkbook.saveAs "E:/CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))"
objExcelApp.Quit
Set objExcelApp=Nothing
Else
”直接保存
objExcelApp.ActiveWorkbook.Save
objExcelApp.Quit
Set objExcelApp=Nothing
End If
这个是实时数据,当写满27行后自动另存为,记得设定触发器的,日报表什么要求?
提问者对于答案的评价:
谢谢啦!~我还有个日报表的问题,记得帮我答一下哦
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc263055.html