Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateien, Platzhalter Problematik

Dateien, Platzhalter Problematik
28.04.2023 15:13:58
Frank Dreier

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!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien, Platzhalter Problematik
28.04.2023 15:30:42
Oberschlumpf
hi Frank,

versuch mal (von mir nur hier aufgeschrieben, also ungetestet)


Sub test()

    Dim lwbAll As Workbook

        For Each lwbAll In Workbooks
            If Left(LCase(lwbAll.Name), 6) = "august" And _
               Right(LCase(lwbAll.Name), 3) = "csv" Then
                   lwbAll.Close False
            End If
        Next
End Sub
In der Codezeile, in der "august" steht, muss die Kleinschreibung beibehalten werden! - also änder das nich um in "August"

Hilfts?

Ciao
Thorsten


AW: Dateien, Platzhalter Problematik
28.04.2023 15:52:35
Frank Dreier
Lieber Thorsten,

Du hast mir den Tag gerettet. Durch Deine Umgehung klappt es - auch wenn die Reihenfolge nicht eingehalten wird oder nur 2 Dateien offen sind. Versuche das Problem seit 3 Stunden zu lösen. Kann man Dir etwas zukommen lassen? Würde auch Herrn Herber und Dir etwas zukommen lassen. Keine Ahnung wie das gehandhabt wird hier. Ich werde mich mal erkundigen. Also Thorsten, vielen Dank. So funktioniert es endlich!


Anzeige
LOL - ich hätte bitte gerne...
28.04.2023 16:07:25
Oberschlumpf
Hi Frank,

...1, nein, 2 Flaschen Don Perignon...hahaha (ich weiß nich ma, ob das so geschrieben wird..und für google bin ich gerad zu faul :-) )

Alles gut!
Ich finde den Grundsatz eines Forums, dass das Wissen vieler auch Wenigen gratis helfen kann, sehr gut!
Daher erwarte ich von niemandem eine Bezahlung, Spende, Obulus, oder wie auch immer du das nennen willst :-)

Ich freu mich, dass ich wieder mal helfen konnte...und werde deswegen noch besser gut schlafen können^^ :-)

Ciao + trotzdem Danke an dich für den Versuch ;-)
Thorsten


Anzeige
AW: Dateien, Platzhalter Problematik
28.04.2023 15:51:18
Edi
Mein Vorschlag würde so aussehen:

Sub DateienSchließen()

Dim i As Integer

For i = Workbooks.Count To 1 Step -1
    If Right(Workbooks(i).Name, 3) = "csv" Then Workbooks(i).Close SaveChanges:=False
Next i

End Sub
Alle geöffneten Dateien werden auf die Endung csv überprüft und bei positivem Ergebnis geschlossen.
Da sich die Gesamtzahl aller geöffneten Dateien (Workbooks.Count) ja mit jedem Schließen ändert, muss rückwärts gezählt werden.
Aber auch nicht wirklich getestet

Gruß

Edi


AW: Dateien, Platzhalter Problematik
28.04.2023 16:01:06
Frank Dreier
Hi Edi, auch hier wieder der Fehler, dass die Datei nicht gefunden wird (ungültiger Bereich). Thorsten hat es irgendwie geschafft, dass Excel bei seinem Makro das Überspringen akzeptiert.

Lieben Gruß!


Anzeige
AW: Dateien, Platzhalter Problematik
28.04.2023 16:01:46
Oberschlumpf
Moin Edi,

mal angenommen, Frank hat noch weitere csv-Dateien geöffnet, z Bsp Juli.csv, Mai.csv, usw....DIE wären mit deinem Code dann aber auch alle...zu! :-)

Ciao
Thorsten


AW: Dateien, Platzhalter Problematik
28.04.2023 16:06:29
Edi
Das stimmt.
Aufgrund des Anfangs der Nachricht war ich der Meinung, dass genau das gewollt ist, alle .csv Dateien zu schließen.
Dann hab ich das falsch verstanden.
Sorry


AW: Dateien, Platzhalter Problematik
28.04.2023 16:11:15
Oberschlumpf
nee nee, alles gut deinerseits!

er hatte ja auch nur geschrieben, dass bspweise einige August*.csv + die Hauptdatei.xlsb geöffnet sind - so weit alles gut!

Ich hatte mir nur überlegt, was ist, wenn später mal...ausser den August.csv-Dateien eben noch andere csv's geöffnet sind - eine Situation, an die Frank vllt jetzt gerade noch gar nicht selbst dran denkt.

nur deshalb mein Hinweis an dich, dass eben mit deinem Code alle csv's aus wären :-)


Anzeige
AW: Dateien, Platzhalter Problematik
28.04.2023 16:15:22
Edi
... aber warum das Script Dateien überspringt, erschließt sich mir jetzt ehrlich gesagt nicht.
Bei mir funzt es

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige