Подтвердить что ты не робот

Как использовать workbook.saveas с автоматической перезаписью

В этом разделе кода Excel ALWAYS предлагает: "Файл уже существует, вы хотите перезаписать?"

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?

Спасибо заранее!

4b9b3361

Ответ 1

Чтобы скрыть подсказку, установите xls.DisplayAlerts = False

ConflictResolution не является свойством true или false, оно должно быть xlLocalSessionChanges

Обратите внимание,, что это не имеет ничего общего с отображением приглашения Overwrite!

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)

Ответ 2

Я рекомендую перед выполнением SaveAs удалить файл, который существует.

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

Это проще, чем отключение и включение DisplayAlerts, плюс, если DisplayAlerts остается отключенным из-за сбоя кода, это может вызвать проблемы, если вы работаете с Excel в одном сеансе.

Ответ 3

Чтобы разделить разницу во мнениях

Я предпочитаю:

   xls.DisplayAlerts = False    
   wb.SaveAs fullFilePath, AccessMode:=xlExclusive, ConflictResolution:=xlLocalSessionChanges
   xls.DisplayAlerts = True