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

bob*_*zzo 56 excel vba excel-vba excel-2010

在这部分代码中,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)
Run Code Online (Sandbox Code Playgroud)

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

提前致谢!

Sor*_*eri 73

没有看到提示集 xls.DisplayAlerts = False

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

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)
Run Code Online (Sandbox Code Playgroud)

  • @JackDouglas - 正如所写,你是对的 - 在设置Workbook对象之后,`DisplayAlerts = False`行应该是.但是,您可以使用`Application.DisplayAlerts`全局设置它.在完成阻止警报后,您也应该将其更改回True. (4认同)
  • 您需要告诉您正在处理的工作簿不显示警报.我已经更新了上面的代码....看看Application.DisplayAlerts应该是wb.Application.DisplayAlerts (3认同)
  • @Sorceri您的回答有很多错误,请考虑修改!**首先**,ConflictResolution与SaveAs覆盖提示无关。(有关详细信息,请参见[here](https://msdn.microsoft.com/zh-cn/library/office/ff198339(v = office.15).aspx)-有关共享excel文件中多个编辑器之间的冲突)第二,Application.DisplayAlerts是Application对象的成员,而不是Workbook对象的成员。因此,在创建新的Excel应用程序实例之后,请使用以下命令:xls.DisplayAlerts = False。(这是OP的代码无法正常工作的真正原因。) (2认同)
  • 在这个特定的问题中,OP创建了一个新的Excel实例(这是无用的,但这是一个坏主意,但无论如何,他确实如此).因此,您需要为新的Excel实例设置DisplayAlerts属性,如下所示:`xls.DisplayAlerts = False` right**after**the set xls = CreateObject("Excel.Application")`line,而不是之前.感谢您的耐心和开放!这很重要,因为您的答案是在Google的第一页上进行了大量搜索.:) (2认同)

Utt*_*tam 12

我建议在执行SaveAs之前,删除文件存在的文件。

If Dir("f:ull\path\with\filename.xls") <> "" Then
    Kill "f:ull\path\with\filename.xls"
End If
Run Code Online (Sandbox Code Playgroud)

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


小智 10

分散意见分歧

我更喜欢:

   xls.DisplayAlerts = False    
   wb.SaveAs fullFilePath, AccessMode:=xlExclusive, ConflictResolution:=xlLocalSessionChanges
   xls.DisplayAlerts = True
Run Code Online (Sandbox Code Playgroud)

  • 使用 CreateObject 创建的 xls。这是 Excel 的不同实例...因此 Application.DisplayAlerts 设置在 **原始** 实例中,同时 wb 保存在第二个实例中。这个答案显示了在第二个实例中设置 DisplayAlerts 应该有效。 (3认同)