Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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

Prüfung geöffnete Dateien

Prüfung geöffnete Dateien
12.01.2023 09:23:57
Kai
Hallo Community,
ich möchte gerne mit meinem Makro prüfen, ob eine Datei bereits geöffnet ist, wenn ich das Makro erneut ausführe Wenn geöffnet dann Messagebox ob die Datei geschlossen werden soll und die aktuelle Datei diese ersetzt oder ob nichts gemacht wird.
Das ist mein Ansatz:
For Adap = 1 To Workbooks.Count
If Workbooks(Adap).Name = "ADAP.csv" Or "ERR.csv" Or "IDENT.csv" Or "MES.csv" Then
Speichern_Spez = (MsgBox("!!!!ACHTUNG!!!!" & vbCrLf & "Es ist bereits eine analysierte Datei geöffnet." & vbCrLf & "Um die aktuelle Datei zu speichern muss die bereits Geöffnete geschlossen werden" & vbCrLf & "Soll die bereits geöffnete Datei geschlossen werden?", vbYesNo, "Makro") = vbYes)
If Not Speichern_Spez Then GoTo ENDE
Workbooks("ADAP.csv").Close SaveChanges:=False
Workbooks("ERR.csv").Close SaveChanges:=False
Workbooks("IDENT.csv").Close SaveChanges:=False
Workbooks("MES.csv").Close SaveChanges:=False
Exit For
End If
Next
In der zweiten Codezeile möchte ich gerne prüfen, ob eine der vier Dateien geöffnet ist. Klappt aber so nicht mit Or.
Bei den schließen der Workbooks benötige ich noch einen Ansatz, weil wenn ein Workbook nicht auf ist, gibt es einen Fehler. Könnte man vielleicht auch mit einer If machen.
Vielen Dank im Voraus
Gruß Kai

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfung geöffnete Dateien
12.01.2023 09:33:15
Rudi
Hallo,
teste mal:

Sub test()
Dim wkb As Workbook
For Each wkb In Workbooks
Select Case LCase(wkb.Name)
Case "adap.csv", "err.csv", "ident.csv", "mes.csv"
If MsgBox("!!!!ACHTUNG!!!!" & vbCrLf _
& "Es ist bereits eine analysierte Datei geöffnet." & vbCrLf _
& "Um die aktuelle Datei zu speichern muss die bereits Geöffnete geschlossen werden" & vbCrLf _
& "Soll die bereits geöffnete Datei geschlossen werden?", vbYesNo, "Makro") = vbYes Then
wkb.Close False
End If
End Select
Next wkb
End Sub
Gruß
Rudi
AW: Prüfung geöffnete Dateien
12.01.2023 09:56:46
Kai
Hallo Rudi,
habe es so umgesetzt, wie du geschrieben hast. Leider kommt dann ein Fehler:
Fehler beim Kompilieren:
Mehrfachdeklaration im aktuellen Gültigkeitsbereich
Gruß Kai
Anzeige
AW: Prüfung geöffnete Dateien
12.01.2023 10:00:48
Kai
Habe das Problem gefunden. Hatte zweimal die Variablendeklaration drin gehabt.
Leider klappt es trotzdem nicht. Er erkennt nicht das die Datei schon offen ist.
Gruß Kai
funktioniert tadellos.
12.01.2023 10:08:52
Rudi
Der Fehler muss bei dir liegen.
Gruß
Rudi
AW: funktioniert tadellos.
12.01.2023 10:17:33
Kai
Ich finde meinen Fehler nicht. Ich habe deinen Code eins zu eins übernommen. habe nur die Bezeichnung der Workbooks geändert.
Ich habe dies in einer Funktion stehen, aber daran kann es nicht liegen. Er geht vier mal durch die Schleife, aber erkennt keine der geöffneten Workbooks. Hatte alle vier mal geöffnet.
Gruß Kai
AW: funktioniert tadellos.
12.01.2023 10:43:12
Rudi
dann heißen deine Workbooks anders als du angibst.
Lass dir die Namen mal ausgeben.
Ich habe dies in einer Funktion stehen, aber daran kann es nicht liegen.
Stimmt, würde ich aber nicht machen. Functions sind dazu da, Werte zurückzugeben und nicht dazu, Aktionen durchzuführen.
Gruß
Rudi
Anzeige
AW: funktioniert tadellos.
12.01.2023 10:47:27
onur
Oder er hat Großbuchstaben in den Dateinamen.
deshalb LCase(). owT
12.01.2023 11:14:05
Rudi
AW: deshalb LCase(). owT
12.01.2023 11:20:56
onur
DAS war mir schon klar, aber ihm offenbar nicht, wenn er in der ZWEITEN Zeile unten Namen mit Grossbuchstaben hatte:

Select Case LCase(wkb.Name)
Case "adap.csv", "err.csv", "ident.csv", "mes.csv"

AW: funktioniert tadellos.
12.01.2023 10:45:29
onur
"habe nur die Bezeichnung der Workbooks geändert." - in WAS genau?
AW: funktioniert tadellos.
12.01.2023 10:53:44
Kai
Hallo ihr Beiden,
ich hatte in meinem ersten Thread die Dateien groß geschrieben. Ich habe jetzt das LCase entfernt und jetzt funktioniert es.
Danke für die Hilfe
Gruß Kai
ogottogott
12.01.2023 11:17:07
Rudi
die Prüfung LCase("TEST")="TEST" kann nicht funktionieren.
LCase("TEST")="test" hingegen schon.
Anzeige
AW: Prüfung geöffnete Dateien
12.01.2023 11:19:13
snb
Alternative:

Sub M_snb()
On Error Resume Next
For Each it In Array("adap.csv", "err.csv", "__energie.xlsx", "mes.csv")
Workbooks(it).Activate
If Err.Number = 0 Then Exit For
Err.Clear
Next
If Not IsEmpty(it) Then it.Close
End Sub

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige