(12.09.2022, 07:15)BuschB schrieb: aber solange Excel noch geöffnet ist (was bei einem ungestörten Ablauf des Codes welcher das SaveAs mit sich führt unumgänglich ist) dann ist auch noch eine Instanz der Datei mit dem alten Namen im Hintergrund geöffnet
Und woher hast du diese Weisheit? Das kann ich nicht nachvollziehen. Bei einem kurzen Test konnte ich nach einem SaveAs keine weitere Instanz der Datei unter dem alten Namen finden.
Ja, findest du auch nicht, aber hast du mal versucht die alte Datei erneut zu öffnen nach dem SaveAs, ohne Excel zwischendurch zu schließen? Bei mir kommt dann immer der Fehler "Konnte nicht geöffnet werden, da die Datei bereits mit einem anderen Programm geöffnet ist" während mir beim Kill-Befehl in VBA der Fehler "Zugriff verweigert" kommt.
Ja man sieht die noch "offene" Instanz der alten Datei nicht, aber sie existiert, irgendwo weit im Hintergrund...
12.09.2022, 13:39 (Dieser Beitrag wurde zuletzt bearbeitet: 12.09.2022, 13:41 von HKindler.)
Hi,
dann frage ich mich, wieso diese Routine bei mir problemlos funktioniert (in Tabelle1!A1 steht eine ganze Zahl, siehe auch Anhang):
PHP-Code:
Sub t() Dim s As String s = ThisWorkbook.Name With Tabelle1.Cells(1, 1) .Value = .Value + 1 ThisWorkbook.SaveAs "test" & .Value Workbooks.Open s End With End Sub
Nach der Ausführung dieses Codes sind sowohl die alte wie auch die neue Datei geöffnet - ohne Fehlermeldung! In der Alten steht in A1 noch die alte Zahl (vor Ausführung des Makros) und in der Neuen ist sie um 1 erhöht. Also alles so wie es sein soll.
Interessant, öffnen geht über Code, aber Löschen nicht... merkwürdig aber ok, wäre einen Versuch wert, das wbk erst nochmal zu öffnen, dann zu schließen und dann zu löschen, vllt klappt es dann... aber nicht heute, zu viel Stress gerade.
12.09.2022, 14:03 (Dieser Beitrag wurde zuletzt bearbeitet: 12.09.2022, 14:05 von HKindler.)
Hi,
auch Löschen der Datei funktioniert:
PHP-Code:
Sub t() Dim s As String s = ThisWorkbook.Name With Tabelle1.Cells(1, 1) .Value = .Value + 1 ThisWorkbook.SaveAs "test" & .Value 'Workbooks.Open s ' Kill s End With End Sub
Was natürlich nicht funktioniert ist Workbooks.SaveCopyAs xxx denn dann ist die ursprüngliche Datei ja noch offen und dafür die Kopie geschlossen. Da fällt Kill s dann auf die Schnauze.