我编写一个宏来将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后关闭文件时,我收到消息'您要保存更改(是/否)。
我还希望在没有此消息的情况下以安静模式保存文件。
答案 0 :(得分:2)
对于第一部分,在执行SaveAs之前添加Application.DisplayAlerts = False
,然后立即添加Application.DisplayAlerts = True
。这会抑制覆盖消息并自动保存旧文件。
答案 1 :(得分:1)
对于第2项,请尝试:
ActiveWorkbook.Close False
它将毫无疑问地关闭。
Jair Batista