目的:想在每天的14:50:00清除数据(先提前打开报表,清除一下数据),然后在15:00,16:00,17:00分别往表格里写数据(触发周期为:30分钟)。当在17:00写完数据后,以当天的日期为名称另存一份。运行后并不往表格里写数据,请帮忙分析一下程序,谢谢!
Option Explicit
Function action
Dim objExcelApp,objExcelBook,objExcelSheet
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="E:\temp\ee\biao.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")
If Hour(Now)=14 And Minute(Now)=50 And Second(Now)=0 Then
objExcelApp.Visible=True
objExcelApp.Workbooks.Open"E:\temp\ee\biao.xls"
objExcelApp.Cells(5,1).Value=Null
objExcelApp.Cells(5,2).Value=Null
objExcelApp.Cells(5,3).Value=Null
objExcelApp.Cells(6,1).Value=Null
objExcelApp.Cells(6,2).Value=Null
objExcelApp.Cells(6,3).Value=Null
objExcelApp.Cells(7,1).Value=Null
objExcelApp.Cells(7,2).Value=Null
objExcelApp.Cells(7,3).Value=Null
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp=Nothing
End If
If Hour(Now)=15 And Minute(Now)=0 And Second(Now)=0 Then
objExcelApp.Visible=True
objExcelApp.Workbooks.Open"E:\temp\ee\biao.xls"
objExcelApp.Cells(5,1).Value = Now
objExcelApp.Cells(5,2).Value=HMIRuntime.Tags("aa2").read
objExcelApp.Cells(5,3).value=HMIRuntime.Tags("aa3").read
objExcelApp.ActiveWorkbook.Save
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp=Nothing
'MsgBox "10"
Else If Hour(Now)=16 And Minute(Now)=00 And Second(Now)=0 Then
objExcelApp.Visible=True
objExcelApp.Workbooks.Open"E:\temp\ee\biao.xls"
objExcelApp.Cells(6,1).Value = Now
objExcelApp.Cells(6,2).Value=HMIRuntime.Tags("aa2").read
objExcelApp.Cells(6,3).value=HMIRuntime.Tags("aa3").read
objExcelApp.ActiveWorkbook.Save
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp=Nothing
' MsgBox "11"
Else If Hour(Now)=17 And Minute(Now)=00 And Second(Now)=0 Then
Dim patch,filename
filename=CStr(Month(Now))&CStr(Day(Now))+CStr(Hour(Now))&CStr(Minute(Now))
patch="E:\temp\ee\"&filename&".xls"
objExcelApp.Visible=True
objExcelApp.Workbooks.Open"E:\temp\ee\biao.xls"
objExcelApp.Cells(7,1).Value = Now
objExcelApp.Cells(7,2).Value=HMIRuntime.Tags("aa2").read
objExcelApp.Cells(7,3).value=HMIRuntime.Tags("aa3").read
objExcelApp.ActiveWorkbook.SaveAs patch
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp=Nothing
Else MsgBox "aa"
End If
End If
End If
End Function
最佳答案
如果你触发器设置30分钟触发一次,意味着打开项目之后,每隔30分钟运行一次这段脚本。
你通过什么保证触发它的时刻正赶上14:50 15:00,16:00,17:00呢?
如果赶不上,那你这段脚本的if里的语句一个也没执行,那怎么会有数呢?
建议你把if里执行的语句写成按钮的vbs脚本,点击按钮测试可以实现写数据的功能,再放回来。
触发器应是三个,就是每天这三个时间。
点击全局脚本编辑器的界面上边触发器的图标,触发器->定时器->周期性 点添加, 然后事件不选标准周期,选下拉列表里的每日的,下边填好时间即可。
用同样方法把每天的这三个时刻都设为触发器,就可以实现你的功能。
提问者对于答案的评价:
谢谢,我再试试.
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc263716.html