关闭工作簿时的VBA Excel操作

4

是否可能在某个人关闭文件时自动让Excel执行一个动作?

情境: 我有一个Excel文件,其他几个人也在使用。当保存该文件时,它会发布一个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

1
试着查看 Private Sub Workbook_BeforeClose(Cancel As Boolean) - Jens
我猜那就可以了。现在我应该关闭这个问题吗? - RiveR
你不必这样做,因为它可能已被标记,如果被视为重复,它将被关闭。如果有人想要写一个正式的答案,你可以选择它或者自己写一个答案。请记住,你不希望删除太多问题。如果你删除了太多自己的问题,可能会被暂时禁止提问。所以在这种情况下,我建议让管理员来决定。这并不是非黑即白的。虽然你正在使用相同的事件,但是有不同的要求。如果你需要特别帮助调用的子程序,我建议保持它开放。 - peege
你有“现在-2”,但昨天也是“现在-1”。 - peege
2个回答

11

这是使用 Workbook 代码:

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

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接