Hallo Leute,
Ich verzweifel langsam.
Ich will eigentlich Excel via Makro nur sagen: Bitte schließe alle geöffneten *.csv Dateien (ohne sie einzeln benennen zu müssen) mit SaveChanges:=False und das scheint ein Ding der Unmöglichkeit zu sein.
Beispiel: (alle geöffnet)
Hauptdatei.xlsb (hier ist das Makro drin)
August03.csv
August12.csv
August25.csv
Ich will jetzt eigentlich nur, dass Excel alle August*.csv schließt. Da der Platzhalter in Workbook(August*.csv).Close nicht funktioniert muss man wohl den Platzhalter definieren. So weit so gut.
Ich habe nun 3 verschiedene Versionen getestet um das Problem zu lösen und alle funktionieren nicht. Es ist zum heulen. Die eine Version funktioniert- aber nur wenn die Dateien der Reihe nach, so wie im Verzeichnis liegend, geöffnet sind, sonst nicht. Er tut sonst immer so als wenn eine Datei nicht offen ist (obwohl sie es ist und auch im Verzeichnis liegt), es ist zum verrückt werden.
Hier das (nicht ganz) funktionierende Makro:
Sub DateienSchließen()
Dim Dname As String, Dpfad As String, DateiName As String
Dname = "August*.csv"
Dpfad = "C:\August\"
DateiName = Dir(Dpfad & Dname)
Do While DateiName > ""
Workbooks(DateiName).Close SaveChanges:=False
DateiName = Dir
Loop
End Sub
Das Makro funktioniert immer nur wenn die Dateien alle in Reihenfolge geöffnet sind, wie im Verzeichnis liegend:(so werden alle geschlossen und es funktioniert):
August03.csv
August12.csv
August25.csv
Hauptdatei.xlsb
Öffne ich hingegen nur:
August03.csv
August25.csv
Hauptdatei.xlsb
Dann schließt er mir nur August03.csv und bei August25.csv tut er so als wenn die Datei nicht vorhanden ist(obwohl sie im Verzeichnis & auch noch offen ist). Er erwartet wohl August12.csv wie im Verzeichnis und kann diese nicht überspringen?? Ich verstehe das einfach nicht was Excel da treibt.
Kann das irgendwer lösen? Gibt es keine andere Lösung? Vielen Dank!