excel報(bào)表不寫數(shù)據(jù).
劉玉蓉
發(fā)布于2014-09-04 17:50
1
0
標(biāo)簽:
目的:想在每天的14:50:00清除數(shù)據(jù)(先提前打開報(bào)表,清除一下數(shù)據(jù)),然后在15:00,16:00,17:00分別往表格里寫數(shù)據(jù)(觸發(fā)周期為:30分鐘)。當(dāng)在17:00寫完數(shù)據(jù)后,以當(dāng)天的日期為名稱另存一份。運(yùn)行后并不往表格里寫數(shù)據(jù),請(qǐng)幫忙分析一下程序.
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: empeeiao.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: empeeiao.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: empeeiao.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: empeeiao.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: empee"&filename&".xls"
objExcelApp.Visible=True
objExcelApp.Workbooks.Open"E: empeeiao.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
佳答案
如果你觸發(fā)器設(shè)置30分鐘觸發(fā)一次,意味著打開項(xiàng)目之后,每隔30分鐘運(yùn)行一次這段腳本。
你通過什么保證觸發(fā)它的時(shí)刻正趕上14:50 15:00,16:00,17:00呢?
如果趕不上,那你這段腳本的if里的語句一個(gè)也沒執(zhí)行,那怎么會(huì)有數(shù)呢?
建議你把if里執(zhí)行的語句寫成按鈕的vbs腳本,點(diǎn)擊按鈕測(cè)試可以實(shí)現(xiàn)寫數(shù)據(jù)的功能,再放回來。
觸發(fā)器應(yīng)是三個(gè),就是每天這三個(gè)時(shí)間。
點(diǎn)擊全局腳本編輯器的界面上邊觸發(fā)器的圖標(biāo),觸發(fā)器->定時(shí)器->周期性 點(diǎn)添加, 然后事件不選標(biāo)準(zhǔn)周期,選下拉列表里的每日的,下邊填好時(shí)間即可。
用同樣方法把每天的這三個(gè)時(shí)刻都設(shè)為觸發(fā)器,就可以實(shí)現(xiàn)你的功能。