Problem
Ohne alle Sheets zu durchlaufen wird eine performante Lösung gesucht zu überprüfen, ob ein Sheet oder Workbook bereits geöffnet wurde.
Ansatz
Eine einfache Methode ist unter Benutzung der „On Error Resume Next“ Anweisung eine Prüfen nach der Referenz
Lösung
Prüfen für Workbook
' Prüfen ob workbook bereits offen Function IsWorkbookOpen(strWB As String) As Boolean On Error Resume Next IsWorkbookOpen = Not Workbooks(strWB) Is Nothing End Function
Beispiel:
If Not IsWorkbookOpen(pfad & zielDatei) Then ' Schaltet die Meldungen aus, Application.DisplayAlerts = False Workbooks.Open pfad & zielDatei ' Schaltet die Meldungen wieder ein Application.DisplayAlerts = True End If
Prüfen für Worksheet:
Dim QWB As Workbook
Set QWB = Workbooks(„JAN-MARCH.xlsx“)
If WorksheetEx(QWB, aktuelleMaterialNummer) Then…
Function WorksheetEx(WBTest As Workbook, strNam As String) As Boolean On Error Resume Next WorksheetEx = WBTest.Worksheets(strNam).Index > 0 End Function
Analog für Sheets
Sheets sind Worksheets inklusive Charts, Pivottabellen …
Function SheetEx(strNam As String) As Boolean On Error Resume Next SheetEx = Sheets(strNam).Index > 0 End Function