如何使用自动覆盖的workbook.saveas

时间:2013-01-31 20:23:27

标签: excel-vba excel-2010 vba excel

在此段代码中,Excel始终提示:“文件已存在,是否要覆盖?”

Application.DisplayAlerts = False
Set xls = CreateObject("Excel.Application")
Set wb = xls.Workbooks.Add
fullFilePath = importFolderPath & "\" & "A.xlsx"

wb.SaveAs fullFilePath, AccessMode:=xlExclusive, ConflictResolution:=True   

wb.Close(True)

如果我有db.SaveAs,为什么DisplayAlerts = False总是提示我覆盖现有文件?

提前致谢!

3 个答案:

答案 0 :(得分:69)

要查看提示设置xls.DisplayAlerts = False

ConflictResolution不是true或false属性,应该是xlLocalSessionChanges - 请注意,这与显示覆盖提示无关!

Set xls = CreateObject("Excel.Application")    
xls.DisplayAlerts = False
Set wb = xls.Workbooks.Add
fullFilePath = importFolderPath & "\" & "A.xlsx"

wb.SaveAs fullFilePath, AccessMode:=xlExclusive,ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges    
wb.Close (True)

答案 1 :(得分:4)

我建议在执行SaveAs之前,先删除该文件。

If Dir("f:ull\path\with\filename.xls") <> "" Then
    Kill "f:ull\path\with\filename.xls"
End If

它比打开和关闭DisplayAlerts容易,而且如果由于代码崩溃而导致DisplayAlerts保持关闭,那么如果您在同一会话中使用Excel,可能会导致问题。

答案 2 :(得分:0)

消除意见分歧

我喜欢

xl0.DisplayAlerts = False

保存,然后应快速返回

xl0.DisplayAlerts = True

..