如何用VBA恢复ThisWorkbook至已保存状态?Excel 2016执行无响应问题
解决Excel 2016中恢复工作簿至上次保存状态的宏问题
你遇到的情况其实很常见——在Excel 2016及之后的版本里,直接用Workbooks.Open(ThisWorkbook.FullName)确实不会有任何反应,这是因为Excel默认采用单实例运行模式,当你尝试打开一个已经在当前实例中打开的工作簿时,它只会激活现有窗口,而不会重新加载文件内容,自然也就不会恢复到上次保存的状态。
下面给你两种简单有效的解决方法:
方法一:关闭当前工作簿后重新打开
这是最直接的自动化方案,通过先关闭当前工作簿(不保存更改),再重新打开它来实现恢复。代码如下:
Sub RevertToLastSavedState() Dim workbookPath As String ' 保存当前工作簿的完整路径 workbookPath = ThisWorkbook.FullName ' 关闭提示,避免弹出"是否保存更改"的对话框 Application.DisplayAlerts = False ' 关闭当前工作簿,不保存任何更改 ThisWorkbook.Close SaveChanges:=False Application.DisplayAlerts = True ' 重新打开工作簿 Workbooks.Open(workbookPath) End Sub
方法二:利用Excel内置恢复功能(非宏方式)
如果你偶尔手动操作,Excel本身就有现成功能:点击左上角的文件选项卡,选择信息,在"管理工作簿"区域点击恢复到上次保存的版本(这个选项仅在存在未保存更改时显示)。但如果需要自动化执行,方法一的宏是更可靠的选择。
注意事项
- 运行宏前,请确认你确实不需要保留当前的更改,因为代码会直接关闭工作簿且不保存任何修改。
- 如果你的工作簿启用了宏,重新打开时要确保宏已启用,否则后续宏操作可能无法正常运行。
内容的提问来源于stack exchange,提问作者Gravitate
相关产品推荐
相关产品推荐

