Hallo VBA-Forum,
ich habe ein kleines Programm, mit welchem ich mehrere (derzeit 5) Dateien schließen will. Leider wird meine Schleife nur ein einziges Mal durchlaufen, schließt ein einziges Mal eine Datei und bleibt dann einfach ohne eine Fehlermeldung stehen. Führe ich mein Programm mit F8 in Einzelschritten weiter aus, werden die restlichen Dateien wie gewünscht gelöscht. Durch`s debuggen habe ich herausgefunden, dass mein Programm nach der "wbk.close"-Zeile stehen bleibt bzw. inaktiv wird.
In einer anderen Datei schließe ich auch einmal mit dem "workbooks.close"-Befehl eine Datei und habe das gleiche Problem. Wobei dort mein Programm vor dem schließen-Befehl stehen bleibt.
Warum bleibt mein Programm stehen und warum kann ich es mit F8 danach ganz normal weiter ausführen? Ist denn der "workbooks.close"-Befehl ein Sonderbefehl, bei dem irgendwas noch vorhanden sein muss oder irgendwas auf keinen Fall geöffnet sein darf oder wo ganz spezielle Regeln eingehalten werden müssen?
Im Internet und in der VBA-Hilfe und in meinem eigentlich schlauen VBA-Buch finde ich leider nichts dazu.
Hier nun mein Code:
Sub schliessen()
Dim wkb As Workbook
Application.DisplayAlerts = False 'Ausschalten von Nachfrage ob Datei/Diagramm wirklich gelöscht werden soll
For Each wkb In Workbooks
If wkb.Name <> ThisWorkbook.Name Then
'If (wkb.Name <> ActiveWorkbook.Name) And (wkb.Name <> ThisWorkbook.Name) Then
wkb.Close savechanges:=True
End If
Next wkb
Application.DisplayAlerts = True 'Einschalten von Nachfrage ob Datei/Diagramm wirklich gelöscht werden soll
'Workbooks.Open "Dateien_Import_Export.xlsm"
End Sub
Vielen Dank für die Hilfe.
mfg
Frank
P.S.: Die "DisplayAlerts"-Befehle sind eigentlich nicht nötig, stören mich aber noch nicht.
|