3

我编写了一个宏以将 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 后使用命令关闭文件时,我收到消息“您是否要保存更改(是/否)。

我还想在没有此消息的情况下以安静模式保存文件。

4

2 回答 2

3

对于第一部分,Application.DisplayAlerts = False在您执行 SaveAs 之前添加并在Application.DisplayAlerts = True之后添加。这会抑制覆盖消息并自动保存旧文件。

于 2013-11-08T17:08:22.903 回答
1

对于第 2 项,试试这个:

ActiveWorkbook.Close False

它会在没有问题的情况下关闭。

贾尔·巴蒂斯塔

于 2013-11-08T16:36:12.347 回答