关闭工作簿时的VBA Excel操作

时间:2015-01-13 13:37:04

标签: excel vba excel-vba

当有人关闭文件时,是否可以自动让Excel执行操作?

我对VBA是一个很新的堆栈溢出,所以请怜悯..

情况: 我有一个Excel文件,也用于bij其他几个人。此文件发布保存时的mhtml文件。这个mhtml文件将以昨天的日期保存,如“Dashboard 2015-01-12”。 mhtml文件中看到的数据必须包含与文件名相关的日期。看到的数据取决于此excel文件中的单个单元格G2

我希望Excel文件执行此操作: 将单个单元格(G2)更改为昨天的日期。然后保存它。然后关闭它

我希望这个动作完成: 有人关闭文件时

代码尚未:

Sub sbWriteCellWhenClosing()

Workbooks("BOOK1.XLS").Close SaveChanges:=True
Range("G2") = Format(Now - 2, dd - mm - yy)

End Sub

编辑:

这会完成这项工作吗?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Range("G2") = Format(Now - 1, dd - mm - yy)
   ActiveWorkbook.Close SaveChanges:=True
End Sub

2 个答案:

答案 0 :(得分:9)

这是使用工作簿代码:

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call sbWriteCellWhenClosing
End Sub

在单独的模块中:

Sub sbWriteCellWhenClosing()

    ActiveSheet.Range("G2") = Format(Now - 1, "dd-mm-yy")   '-1 for yesterday
    ActiveWorkbook.Save

End Sub

答案 1 :(得分:2)

您应该使用Workbook.BeforeClose事件: http://msdn.microsoft.com/en-us/library/office/ff194765%28v=office.15%29.aspx

要在VBA编辑器的项目窗口中执行此操作,您必须使用ThisWorkbook并将代码放在那里。您的代码仅适用于以这种方式修改的工作簿。