我编写宏以将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。这样可以抑制覆盖消息,并自动保存旧文件。

08-05 15:02