VBA Excel 关闭工作簿时的动作

VBA Excel action when closing workbook

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

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

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

我希望完成此操作: 当有人正在关闭文件时。

我目前的代码:

Sub sbWriteCellWhenClosing()

工作簿("BOOK1.XLS")。关闭 SaveChanges:=True
范围("G2")=格式(现在 - 2,dd - mm - yy)

结束子

编辑:

这行吗?

Private Sub Workbook_BeforeClose(取消为布尔值)
  范围("G2")=格式(现在 - 1,dd - mm - yy)
   ActiveWorkbook.Close 保存更改:=真
结束子

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

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

这是使用工作簿代码:

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