Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Workbook prüfen wenn vorhanden schließen


Betrifft: Workbook prüfen wenn vorhanden schließen von: Markus
Geschrieben am: 17.07.2018 12:40:56

Hallo Community,

folgende Bitte:
ich bräuchte eine Funktion die ich aufrufe oder alles in einer Prozedure, die mir ermittelt ob drei Workbooks vorhanden sind und ob das dritte offen ist.
Ist das dritte Workbook geöffnet und vorhanden soll es geschlossen werden, sonst soll er normal weiter machen.
Wie setze ich das um?

also so was in der art:
if Workbooks(3) exists and open Then
Workbooks(3).close
else
gehe weiter im Code
End if

dabei soll er bei der else Anweisung aber nicht stehenbleiben, wenn er das Workbooks(3) nicht gefunden hat, sondern weiter im Code arbeiten ohne was extra callen zu müssen, geht sowas und wenn ja wie?

Mein bisheriger Code:


Public Function Exists(strName As String) As Boolean
Dim wbb As Workbook

For Each wbb In Application.Workbooks
If wbb.Name = Workbooks(3) or strName Then
'MsgBox wbb.Name & "und" & strName

Exists = True

else
Exists = False

Exit Function

End If
Next wbb
End Function


Sub Test()
If Exists(Workbooks(3)) = True Then
Workbooks(3).Close
MsgBox "Mappe 3 wurde erfolgreich geschlossen"
Else
MsgBox "Keine Mappe 3 vorhanden"
'weiter im Code...
End If
End Sub

Hoffe jemand kann mir sagen was ich da noch ergänzen oder ändern muss.

Beste Grüße

Markus

  

Betrifft: AW: Workbook prüfen wenn vorhanden schließen von: Daniel
Geschrieben am: 17.07.2018 13:08:48

Hi

ob ein Workbook in einem bestimmten Verzeichnis vorhanden ist, kannst du so prüfen:

if DIR("C:\Order1\Ordner2\Dateiname.xlsx") <> "" then 
    Msgbox "Datei vorhanden"
else
    Msgbox "Datei fehlt"
end if
ob eine Datei geöffnet ist, kannst du so prüfen:
dim wb as Workbook
on error resume next
set wb = Workbooks("Dateiname.xlsx")
on error goto 0
if wb is nothing then
    msgbox "Datei nicht geöffnet
else
    msgbo "Datei geöffnet"
End if
oder auch so:
dim i as Long
for i = 1 to application.Workbooks.count
    if Workbooks(i).Name = "Dateiname.xlsx" then Exit for
end if
if i <= application.Workbooks.count then
    msgbox "Datei geöffnet
else
    msgbox "Datei nicht geöffnet"
end if
andererseits, wenn du nur sicherstellen willst, dass die betroffene Datei nicht geöffnet ist, kannst du sie auch einfach schließen und dabei den Fehlerstop ausschalten:
On Error Resume Next
Workbooks("Dateiname.xlsx").Close
On Error Goto 0


Gruß Daniel


  

Betrifft: AW: Workbook prüfen wenn vorhanden schließen von: Markus
Geschrieben am: 17.07.2018 13:36:07

Hallo Daniel,

danke für die Antwort.

Mein Problem ist ich kenne das Verzeichnis nicht (es ist variabel und nicht fest) und der Name der Datei ändert sich auch ständig.
Ich möchte daher nur prüfen ob ein Workbooks(3) vorhanden und geöffnet ist.
Weder eine Dateiprüfung noch eine Namensprüfung nützen mir etwas, sondern ich bräuchte eine allgemeine Workbooks Exists Prüfung ob geöffnet oder nicht. (siehe oben)

Beste Grüße

Markus


  

Betrifft: AW: Workbook prüfen wenn vorhanden schließen von: Daniel
Geschrieben am: 17.07.2018 13:40:59

Hi

Dann einfach mit Workbooks.Count die Anzahl der geöffneten Dateien abfragen.
Ist die Anzahl größer gleich 3, ist Workbooks(3) vorhanden und geöffnet.

Gruß Daniel


  

Betrifft: AW: Workbook prüfen wenn vorhanden schließen von: Markus
Geschrieben am: 17.07.2018 15:49:59

Hallo Daniel,

danke ja genau das hat funktioniert. :)

Eine Frage habe ich aber noch: Kann man Workbooks die man schließt aus dem Speicher von Excel entfernen?
Bei mir schleppt er manchmal wenn er wieder öffnet alte geschlossene Workbooks wieder mit und öffnet die statt den eigentlichen.
Durch die Methode jetzt kann ich dem zwar Herr werden, aber mich würde trotzdem interessieren ob so was geht und wenn ja wie da der Code dafür aussehen würde.
Also quasi Workbooks komplett aus dem Speicher löschen nach Schließung. Dabei erfolgte die Schließung als auch das wiederöffnen per VBA.

Beste Grüße

Markus


  

Betrifft: das Problem sagt mir jetzt nichts. owt von: Daniel
Geschrieben am: 18.07.2018 12:43:41

Gruß Daniel


Beiträge aus dem Excel-Forum zum Thema "Workbook prüfen wenn vorhanden schließen"