Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Abfrage nach aktivem Workbook

Forumthread: Abfrage nach aktivem Workbook

Abfrage nach aktivem Workbook
16.08.2005 14:26:15
Fred
Hi,
ich möchte im Editor ein Makro starten, das sich in der persönlichen Arbeitsmappe befindet. Dieses Makro schreibt in alle VBA-Komponenten der aktiven Mappe einen Standardheader, das klappt auch.
Wenn jetzt versehentlich keine Mappe geöffnet ist, gibt es einen Fehler(91),
ist ja auch klar.
Wie frage ich am einfachsten ab, ob eine aktive Mappe vorhanden ist?
Das soll laut Vorgabe aber nicht einfach mit On Error, sondern mit gezielter
Abfrage gemacht werden.
mfg Fred
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abfrage nach aktivem Workbook
16.08.2005 14:32:48
gordon
Hi Fred,
Application.Workbooks.Count
geöffnete AddIns werden ignoriert.
Gruß
gordon
AW: Abfrage nach aktivem Workbook
16.08.2005 14:36:31
Fred
Hi,
ganz so einfach ist es nicht, da werden auch ausgeblendete Workbooks mitgezählt,
wie die persönl.xls und Workbooks, die mit Getobject geöffnet wurden.
mfg Fred
AW: Abfrage nach aktivem Workbook
16.08.2005 14:37:52
Peter
Servus,
z.B. so. Anstatt der Msgbox musst halt ne Fehlerbehandlung schreiben.
If IsEmpty(ActiveWorkbook.FullName) = True Then MsgBox ("0")
MfG Peter
Anzeige
AW: Abfrage nach aktivem Workbook
16.08.2005 14:41:33
fred
Hi,
danke, aber das geht ja grad nicht, weil es kein aktives Workbook gibt(Fehler 91).
mfg Fred
AW: Abfrage nach aktivem Workbook
16.08.2005 14:48:33
Peter
Servus,
hast natürlich recht. Sry ;) , so gehts, diesmal getestet ;).
Sub t()
Dim wbk As Workbook
Dim x As Integer
x = 0
For Each wbk In Application.Workbooks
If wbk.name <> "Personl.xls" Then x = x + 1
Next
If x = 0 Then MsgBox ("FEHLER")
End Sub

MfG Peter
Anzeige
AW: Abfrage nach aktivem Workbook
16.08.2005 14:57:05
Fred
Hi,
danke, aber so gehts auch nicht, es kann ja mehrere ausgeblendete Mappen geben,
dann bringt x z.B. 8 und die Bedingung ist nicht erfüllt.
mfg Fred
AW: Abfrage nach aktivem Workbook
16.08.2005 14:59:00
K.Rola
Hallo,
wie wär es so?

Private Function Mappe_da() As Boolean
Dim wnd As Window, i As Integer
For Each wnd In Windows
If wnd.Visible Then i = i + 1
Next
If i > 0 Then Mappe_da = True
End Function

Gruß K.Rola
Anzeige
Genau so, danke owT
16.08.2005 15:04:14
Fred
f
;
Anzeige
Anzeige

Infobox / Tutorial

Abfrage nach aktivem Workbook in Excel VBA


Schritt-für-Schritt-Anleitung

Um zu überprüfen, ob ein aktives Workbook in Excel geöffnet ist, kannst Du den folgenden VBA-Code verwenden. Dieser Code zählt die sichtbaren Arbeitsmappen und gibt eine entsprechende Rückmeldung, wenn keine aktiv ist.

  1. Öffne den VBA-Editor mit ALT + F11.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineMappe)", dann "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Private Function Mappe_da() As Boolean
    Dim wnd As Window, i As Integer
    For Each wnd In Windows
        If wnd.Visible Then i = i + 1
    Next
    If i > 0 Then Mappe_da = True
End Function
  1. Rufe die Funktion Mappe_da() in Deinem Hauptcode auf, um zu überprüfen, ob eine Arbeitsmappe vorhanden ist.

Häufige Fehler und Lösungen

Fehler 91: "Objektvariable oder With-Blockvariable nicht festgelegt"
Dieser Fehler tritt auf, wenn Du versuchst, auf ActiveWorkbook zuzugreifen, wenn keine Arbeitsmappe geöffnet ist. Stelle sicher, dass Du die oben beschriebene Funktion Mappe_da() verwendest, um diese Situation zu überprüfen, bevor Du auf die aktive Arbeitsmappe zugreifst.

Zählung ausgeblendeter Mappen: Wenn Du ausgeblendete Mappen zählst, kann es sein, dass Du falsche Ergebnisse erhältst. Verwende die Sichtbarkeitsprüfung in der Funktion, um nur sichtbare Fenster zu zählen.


Alternative Methoden

Eine alternative Methode besteht darin, die Anzahl der geöffneten Arbeitsmappen mit Application.Workbooks.Count abzufragen. Beachte dabei, dass auch ausgeblendete Mappen gezählt werden. Daher solltest Du sicherstellen, dass Du nur sichtbare Mappen überprüfst.

If Application.Workbooks.Count = 0 Then
    MsgBox "Es sind keine Arbeitsmappen geöffnet."
End If

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die Abfrage nach dem aktiven Workbook umsetzen kannst:

  1. Einfaches Makro zur Überprüfung:
Sub CheckActiveWorkbook()
    If Not Mappe_da() Then
        MsgBox "Keine aktive Arbeitsmappe gefunden!"
    Else
        MsgBox "Eine aktive Arbeitsmappe ist vorhanden."
    End If
End Sub
  1. Kombination mit Fehlerbehandlung:
Sub HandleWorkbookCheck()
    On Error Resume Next
    If ActiveWorkbook Is Nothing Then
        MsgBox "Fehler: Keine aktive Arbeitsmappe!"
    Else
        MsgBox "Aktive Arbeitsmappe: " & ActiveWorkbook.Name
    End If
    On Error GoTo 0
End Sub

Tipps für Profis

  • Verwende immer eine Fehlerbehandlung, um unerwartete Abstürze beim Ausführen von Makros zu vermeiden.
  • Teste Deinen Code in einer sicheren Umgebung, bevor Du ihn in produktiven Arbeitsmappen anwendest.
  • Halte Deine Excel-Version aktuell, da neue Funktionen und Fehlerbehebungen die Handhabung von Workbooks erleichtern können.

FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob eine bestimmte Arbeitsmappe geöffnet ist?
Du kannst eine Schleife verwenden, um alle geöffneten Arbeitsmappen abzufragen:

Dim wbk As Workbook
For Each wbk In Application.Workbooks
    If wbk.Name = "DeineMappe.xlsx" Then
        MsgBox "Die Arbeitsmappe ist geöffnet."
        Exit Sub
    End If
Next
MsgBox "Die Arbeitsmappe ist nicht geöffnet."

2. Was tun, wenn mein Makro nicht funktioniert?
Überprüfe Deinen Code auf mögliche Syntaxfehler und stelle sicher, dass Du die richtigen Objekte und Variablen verwendest. Stelle auch sicher, dass Du die richtigen Referenzen in Deinem VBA-Editor gesetzt hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige