it-swarm.com.de

Verwendung von workbook.saveas mit automatischem Überschreiben

In diesem Codeabschnitt wird in Excel IMMER die folgende Meldung angezeigt: "Die Datei ist bereits vorhanden. Möchten Sie sie überschreiben?"

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)

Warum tut db.SaveAs Fordere mich immer auf, eine vorhandene Datei zu überschreiben, wenn ich DisplayAlerts = False?

Danke im Voraus!

52
bob.mazzo

Um die Eingabeaufforderung nicht zu sehen, setzen Sie xls.DisplayAlerts = False

ConflictResolution ist keine wahre oder falsche Eigenschaft, sondern sollte xlLocalSessionChanges sein - beachten Sie, dass dies nichts mit der Anzeige der Überschreibaufforderung zu tun hat!

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)
71
Sorceri

Ich empfehle, vor dem Ausführen von SaveAs die vorhandene Datei zu löschen.

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

Dies ist einfacher als das Ein- und Ausschalten von DisplayAlerts. Wenn DisplayAlerts aufgrund eines Codeabbruchs ausgeschaltet bleibt, kann dies zu Problemen führen, wenn Sie in derselben Sitzung mit Excel arbeiten.

7
Uttam

Die Meinungsverschiedenheit spalten

Ich bevorzuge:

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

..

0
Harry S