了解自动关闭和保存excel背后的代码

时间:2014-06-05 20:25:39

标签: excel vba excel-vba

目标:我正在尝试自动关闭工作簿以查找我更新的报告,因为有用户打开它们,忘记在晚上关闭它们。我已将自动关闭时间设置为上午12点。

问题1:所以我已经有了几个解决这个问题的方法。我通过google上的一些搜索找到了答案,并结合了几段代码来获得我想要的内容。现在我想知道是否可以使用excel vba auto save&只关闭一个模块或ThisWorkbook。基本上将所有代码保存在一个地方。

问题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(这是我获得帮助以使第一个宏工作的地方)

1 个答案:

答案 0 :(得分:0)

我可能不是天才,但没有什么能阻止你把&#34;模块代码&#34;在&#34; thisworkbook&#34;。

我不知道你为什么要打电话给#34;重置&#34;每次打开工作簿时都会显示宏,每次更改工作表时......如果打开工作簿,工作表都没有激活?我说第一个是最好的。

编辑:大声笑我没看到未格式化的内容&#39;将其插入此工作簿