谁能告诉我如何撤消对工作簿的所有更改? 我有文件 excel1.xlsx,并且我使用 vba 对 excel.xlsx 进行了排序和许多操作。但最后我希望 excel1.xlsx 与开始时相同。如何使用 vba 撤消所有更改?
activeworkbook.saved = True
我发现它保留了开始时的所有内容,但它不起作用。那么有什么命令可以在对其执行操作后取回原始文件。嗯,是的
wb1.Sheets(1).Activate
ActiveWorkbook.Close savechanges:=False
它有效,但我不希望我的工作簿关闭,它应该仍然打开。我该怎么做?提前致谢。
最佳答案
为了撤消子例程,您可以选择不保存文件并直接关闭它,或者必须编写一个特殊的子例程来保存文件的状态,然后恢复状态(自定义撤消) 。子例程的痛苦之一是它们无法通过正常撤消来撤消。大多数人,包括我在内,都会建议您进行备份工作。
在制定客户撤消例程时,最大的问题是您需要保存状态做什么?保存有关文件的所有信息会非常繁重,因此最好知道您要保存的内容。
更新: 如果您只有一张数据,那么这是一种肮脏的备份方式。这更多的是创建备份的一种方法的概念证明,而不是最终确定的完美代码。它只是创建当前工作表的备份副本,当您恢复时,您只需删除原始工作表并将备份重命名为以前的名称即可。 :p
如何测试: 将一些数据和值放入原始工作表中,然后运行 Test() 子例程!
Public backupSheet As Worksheet
Public originalSheet As Worksheet
Public originalSheetName As String
Sub CreateBackup()
Set originalSheet = Application.ActiveSheet
originalSheetName = originalSheet.Name
originalSheet.Copy After:=Sheets(Application.Worksheets.Count)
Set backupSheet = Application.ActiveSheet
backupSheet.Name = "backup"
originalSheet.Activate
End Sub
Sub RestoreBackup()
Application.DisplayAlerts = False
originalSheet.Delete
backupSheet.Name = originalSheetName
Application.DisplayAlerts = True
End Sub
Sub ZerosFromHell()
Range("A1:Z100").Select
Cells.Value = 0
End Sub
Sub Test()
Call CreateBackup
Call ZerosFromHell
MsgBox "look at all those darn 0s!"
Call RestoreBackup
End Sub
关于vba - 使用VBA对Excel文件执行所有操作后如何取回原始文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6993182/