当 Excel 关闭且未保存时,如何回滚另一个文件?

当 Excel 关闭且未保存时,如何回滚另一个文件?

我有一个 Excel 电子表格,其中有一个宏,可以将一些单元格值写入文本文件。当任何这些单元格值发生变化时,都会触发该宏并更新文本输出。

但是,如果用户决定关闭电子表格而不保存更改,则不会触发宏,并且文本输出不会更新到更改之前的状态。

一个简单的例子来阐明这个问题:

  • 假设单元格 B3 包含字符串“Beer”
  • 然后用户将此单元格编辑为“Wine”
  • 宏检测到更改并将文本文件更新为“Wine”
  • 如果用户随后关闭 Excel 而不保存更改,单元格 B3 显然会变回“啤酒”(不过,由于 Excel 正在关闭,因此只有在下次打开电子表格时才可见)……但文本文件继续显示“Wine”,因为关闭 Excel 而不保存显然不会引起任何可用于触发宏的更改事件。即使从 Workbook_BeforeClose 或 Workbook_Deactivate 事件调用宏也不会将文本输出从“Wine”刷新回“Beer”

关于如何回滚文本输出,有什么建议吗?

答案1

只需一点额外的代码,我就能使事情按如下方式工作:

  • 当 Excel 打开时,VBA 宏会创建 TEXTFILE 并立即将其复制到文件 TEXTCOPY
  • 当用户进行更改时,TEXTFILE会更新,但TEXTCOPY不会
  • 当用户保存更改时,TEXTCOPY 会更新
  • 当用户退出 Excel 且未保存时,TEXTFILE 将被删除,并且 TEXTCOPY 将被重命名为 TEXTFILE
  • 当用户保存并关闭 Excel 时,TEXTCOPY 将被删除

相关内容