目标:我试图自动关闭工作簿以更新报告,因为有用户打开它们,并忘记在晚上关闭它们。我已将自动关闭时间设置为上午12点。了解自动关闭并保存在Excel中的代码
问题1:所以我已经有一些针对这个问题的解决方案。我通过在google上进行的一些搜索找到了答案,并结合了几段代码来获得我想要的内容。现在我想知道是否可以在一个模块或ThisWorkbook中关闭excel vba自动保存&。基本上保留所有的代码在一个地方。
问题2:我知道第一个和第二个宏工作,我想知道哪个更高效,更干净,为什么?
1ST MACRO
'插入的ThisWorkbook
Private Sub Workbook_Open()
Static SchedSave
If SchedSave <> 0 Then
Application.OnTime SchedSave, "SaveWork", , False
End If
SchedSave = TimeValue("09:29:00") ' Insert Desired time in Military
Application.OnTime SchedSave, "SaveWork", , True
End Sub
' 插入模块
Sub SaveWork()
ThisWorkbook.Save
ThisWorkbook.Close
End Sub
2ND MACRO
'插入的ThisWorkbook
Private Sub Workbook_Open()
Reset
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Reset
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Reset
End Sub
' 插入模块
Sub Reset()
Static SchedSave
If SchedSave <> 0 Then
Application.OnTime SchedSave, "SaveWork", , False
End If
SchedSave = TimeValue("12:00:00") ' 12AM
Application.OnTime SchedSave, "SaveWork", , True
End Sub
Sub SaveWork()
ThisWorkbook.Save
ThisWorkbook.Close
End Sub
还贴出:http://www.mrexcel.com/forum/excel-q...ml#post3830083(这是我得到的帮助来获得第一宏工作)
这个我会去解决2,你可以接着调用从几个地方的Reset()ThisWorkbook.Close的SaveChanges:=假 – Nybbe