我编写宏以将Excel工作表中的数据保存为CSV格式-VBA 2010
一切完成后,我在宏末尾只有2个问题。
1)在命令ActiveWorkbook.SaveAs
中,我使用选项ConflictResolution:=xlLocalSessionChanges
来保证覆盖文件(如果存在于同名文件夹中),该选项应以安静模式覆盖现有文件,而无需询问用户是否要覆盖现有文件与否。
它正在使用以下语法
ActiveWorkbook.SaveAs Filename:="C:\File1.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False, ConflictResolution:=xlLocalSessionChanges
如果存在同名文件,则该文件将被覆盖
但是此选项不起作用,尽管例如在以普通Excel格式保存文件时起作用,但在另存为CSV时不起作用。
但是它不能在下面的语法中工作
ActiveWorkbook.SaveAs Filename:="C:\File1.csv", FileFormat:= _
xlCSV, CreateBackup:=False, ConflictResolution:=xlLocalSessionChanges
我的意思是“它不起作用”是指它不会覆盖现有文件,并且仍然显示消息,提示存在一个同名文件,并询问用户是否要覆盖它。
由于这是一个宏,因此我不希望受到用户的任何干扰。
2)当我使用命令
ActiveWorkbook.Close
将文件转换为CSV后关闭文件时,显示消息“您是否要保存更改(是/否)。我也想在没有此消息的情况下以安静模式保存文件。
最佳答案
对于第一部分,在执行SaveAs之前添加Application.DisplayAlerts = False
,然后立即添加Application.DisplayAlerts = True
。这样可以抑制覆盖消息,并自动保存旧文件。