excel VBA Workbook Savechanges = False运行宏时仍在保存和关闭工作簿

guicsvcw  于 2023-06-30  发布在  其他
关注(0)|答案(3)|浏览(301)

我有一个主工作簿,它从其他工作簿工作表中提取数据,然后关闭修改后的工作簿,并取消保存选项。
other_wb.关闭Savechanges = False
但是,当运行宏或在调试模式下单步执行此函数调用时,它仍然保存文件。是否有其他方法可以在不保存的情况下关闭?对这种行为有什么解释吗?
如果需要,我可以提供更多信息。

4ioopgfo

4ioopgfo1#

Savechanges是未定义的变量。因此,它是Empty; Empty是falsy,所以表达式Savechanges = False的计算结果是True,所以调用变成了other_wb.Close True,它保存了文件。
您缺少冒号:

other_wb.Close Savechanges:= False

Option Explicit放在所有代码模块的顶部,这样就不必处理此类问题。

30byixjq

30byixjq2#

在进行更改之前使用other_wb.AutoSaveOn = False。

6ljaweal

6ljaweal3#

我的Excel版本中似乎确实存在一个错误- Microsoft® Excel® for Microsoft 365 MSO(Version 2202 Build 16.0.14931.20128)64位
特别是,无法识别工作簿关闭的SaveChanges参数。例如:

DataWorkbook.Close savechanges:=True

这不仅在执行时不起作用--工作簿没有保存就被关闭了--代码编辑器/解析器甚至不能识别SaveChanges参数。其证明是,它不会将上述语句中的“savechanges”更改为“SaveChanges”。
所以,在没有解决方法的情况下,我很想看到,我已经切换到以下内容:

DataWorkbook.Save
DataWorkbook.Close

唯一潜在的缺点是,如果没有任何更改,那么我相信保存功能仍然可以保存。因此,如果不必要的保存存在资源问题,或者在保存的文件上具有精确正确的时间戳很重要,则可能存在问题。除此之外,它似乎很好。

相关问题