在特定的时间closures工作簿

我到处寻找答案,无法弄清楚。 我正在寻找一种方法,每天晚上在午夜自动closures并保存工作簿,因为它有重要的信息,人们因为不保存而不断input。 如果我手动点击X来closuresExcel,但是我不能在预定的时间完成它,所以我已经完成了closures和保存部分。 我已经使用Application.OnTime没有任何成功。 这里是我用来closures和保存工作簿的代码。 如果工作簿仍然打开,我只需要代码在午夜运行。

 Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheet1.Activate Sheet1.Range("AB18:AD18").Select Selection.ClearContents ActiveWorkbook.Save End Sub 

我无法引用工作表.CodeName属性,但不与Worksheet .Name属性 。

Module1代码表

 Option Explicit Sub ScheduleClose() Application.OnTime Now + TimeSerial(0, 0, 4), "Kamikaze" End Sub Sub Kamikaze() Debug.Print "boom" Application.DisplayAlerts = False With ThisWorkbook .Worksheets("Sheet1").Activate .Worksheets("Sheet1").Range("AB18:AD18").ClearContents .Save .Close savechanges:=False End With End Sub 

当然,工作簿必须已经保存(即不是 Book1),因为没有提供名字,但如果工作簿习惯上还没有保存,可以使用Workbook.SaveAs方法 。

这也将在Excel应用程序的“实例”中留下“孤立的”VBA项目。 VBA不能自杀,因为它必须运行才能完成命令。