74

コードのこのセクションでは、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ですか?

4

3 に答える 3

95

プロンプトセットを非表示にするにはxls.DisplayAlerts = False

ConflictResolutiontrueまたは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)
于 2013-01-31T20:42:50.330 に答える
26

名前を付けて保存を実行する前に、ファイルが存在する場合は削除することをお勧めします。

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

DisplayAlertsをオフにしてからオンに設定するよりも簡単です。さらに、コードのクラッシュのためにDisplayAlertsがオフのままである場合、同じセッションでExcelを操作すると問題が発生する可能性があります。

于 2018-07-05T10:45:44.463 に答える
10

意見の違いを分割するには

私が好む:

   xls.DisplayAlerts = False    
   wb.SaveAs fullFilePath, AccessMode:=xlExclusive, ConflictResolution:=xlLocalSessionChanges
   xls.DisplayAlerts = True
于 2019-03-16T07:51:51.093 に答える