Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Prüfen ob Datei geöffnet und schließen

Prüfen ob Datei geöffnet und schließen
14.07.2021 18:12:00
Martin
Hallo liebes Forum =)
gibt es eine Funktion, wie ich prüfen kann, ob ich eine Datei Filename ="test.xlsb" offen habe und diese dann ggf. ohne zu speichern schließen kann?
Ich versuche mir gerade dadurch zu helfen, dass ich die Strings Filename, Tabname und ControlFile (datei mit Makro) fülle,
und dann die Datei versuche zu aktivieren; Nachteil, wenn die Datei nicht bereits offen ist, gibt es einen Fehler.
Selbst wenn die Datei offen ist schreibt es irgendwie in die Datei mit dem Makro im Vordergrund, statt in der Datei filename in den tab tabname (andere Datei).
Bin ratlos... vielleicht erstmal Zeit Pasta zu machen *lach*
Vielen vielen lieben Dank für eure Tipps, was schief gegangen ist und wie ich das Ursprungsproblem lösen kann.
lg Martin
QuelleNameLaden
Windows(Filename).Activate
Worksheets(Tabname).Activate
MsgBox Tabname & " " & Filename
Worksheets(Tabname).Cells(1, 1).Value = Now
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen ob Datei geöffnet und schließen
14.07.2021 18:30:31
Martin
Mit Google konnte ich eine Lösung zusammenkopieren.
Bleibt die Frage, wieso ich nicht in der Lage war in die Datei zu schreiben und sie sichtbar in den Vordergrund zu ziehen?!
Dankeschön =) =) =)
QuelleNameLaden
Dim Offen As Boolean
Dim WoDatei As Workbook
For Each WoDatei In Workbooks
If WoDatei.Name = Filename Then
MsgBox "Datei ist schon geöffnet!"
Offen = True
Windows(Filename).Activate
ActiveWorkbook.Close SaveChanges:=False
Exit For
End If
Next
If Offen = False Then
MsgBox Filename & " ist geöffnet!"
End If
Anzeige
AW: Prüfen ob Datei geöffnet und schließen
14.07.2021 18:46:29
Martin
p.s. ist Filename minimiert, kann schreibt es nicht rein (Code siehe unten). Ist nur eine andere Datei im Vordergrund geht es....
Wieso es trotzdem auch mal in die Datei mit dem Makro (ControlFile) geschrieben hat, bin ich ratlos.
Wie sollte ich stattdessen die Datei aktivieren und mit ihr interagieren?
Dankeschön und einen schönen Abend euch allen noch.
Windows(Filename).Activate
Worksheets(Tabname).Cells(2, 5).Value = "nun aber Essen"
Habe ich diese Zeile noch dabei, schließt es trotz des Minimierens, obwohl es nicht den Text reinschreibt, also nicht aktiv ist?!....
Hoffe ich nutze nur einen falschen Befehl....
ActiveWorkbook.Close SaveChanges:=False
Anzeige
AW: Prüfen ob Datei geöffnet und schließen
14.07.2021 19:08:20
Yal
Hallo Martin,
lege die Prüfung in einer separate Function, um deren Ergebnis abrufen zu können:

Private Function IstWorkbook_offen(Dateiname As String) As sboolean
Dim W As Workbook
For Each W In Workbooks
If StrComp(W.Name, Dateiname, vbTextCompare) Then
IstWorkbook_offen = True
Exit Function 'weiter Prüfung unnötig
End If
Next
End Function
Dann kannst Du die Prüfungsfunktion aufrufen:

Sub Daten_reinschreiben()
Const cDatei = "testdatei.xlsx"
If IstWorkbook_offen(cDatei) Then
Workbooks(cDatei).Worksheets(Tabname).Cells(2, 5).Value = "nun aber Essen"
End If
End Sub
Da "IstWorkbook_offen" True oder False liefert, musst Du nicht IstWorkbook_offen(cDatei) = True auswerten.
Workbooks werden nicht mit Windows() angesprochen, sondern als Workbooks(NameDesWB). Es gibt einen Workbook-Objekt zurück, worauf man die Aktion machen oder machenlassen kann.
Deutsche Bezeichnung für Sub/Function oder Variablen helfen schneller zwischen VBA-native Ausdrücke und eigene zu unterscheiden (ok: es ist nur meine Meinung ;-)
VG
Yal
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Prüfen, ob eine Datei geöffnet ist und sie schließen


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu prüfen, ob eine Datei geöffnet ist und sie gegebenenfalls zu schließen, folge diesen Schritten:

  1. Erstelle eine Funktion zur Überprüfung: Verwende die folgende Funktion, um zu prüfen, ob die Datei bereits geöffnet ist:

    Private Function IstWorkbook_offen(Dateiname As String) As Boolean
       Dim W As Workbook
       For Each W In Workbooks
           If StrComp(W.Name, Dateiname, vbTextCompare) = 0 Then
               IstWorkbook_offen = True
               Exit Function 'weiter Prüfung unnötig
           End If
       Next
       IstWorkbook_offen = False
    End Function
  2. Nutze die Funktion in deinem Hauptcode: Integriere die Funktion in dein Skript, um die Datei zu überprüfen und sie zu schließen:

    Sub Daten_reinschreiben()
       Const cDatei = "testdatei.xlsx"
       If IstWorkbook_offen(cDatei) Then
           MsgBox cDatei & " ist geöffnet!"
           Workbooks(cDatei).Close SaveChanges:=False
       Else
           MsgBox cDatei & " ist nicht geöffnet."
       End If
    End Sub
  3. Testen: Führe das Skript aus und überprüfe die Meldungen, um sicherzustellen, dass die Funktion wie gewünscht arbeitet.


Häufige Fehler und Lösungen

  • Problem: Die Datei wird nicht erkannt, obwohl sie geöffnet ist.

    • Lösung: Stelle sicher, dass der Dateiname exakt übereinstimmt, einschließlich der Dateiendung.
  • Problem: Der Code wirft einen Fehler, wenn die Datei nicht offen ist.

    • Lösung: Verwende die oben genannte Funktion, um die Datei zu überprüfen, bevor du versuchst, darauf zuzugreifen.
  • Problem: Die Datei wird minimiert und kann nicht bearbeitet werden.

    • Lösung: Stelle sicher, dass die Datei aktiv ist, bevor du versuchst, Daten zu schreiben.

Alternative Methoden

Eine alternative Methode zur Überprüfung, ob eine Datei geöffnet ist, besteht darin, die On Error-Anweisung zu verwenden:

Sub PrüfenUndSchließen()
    Dim wb As Workbook
    On Error Resume Next
    Set wb = Workbooks("testdatei.xlsx")
    On Error GoTo 0

    If Not wb Is Nothing Then
        MsgBox "Die Datei ist geöffnet."
        wb.Close SaveChanges:=False
    Else
        MsgBox "Die Datei ist nicht geöffnet."
    End If
End Sub

Diese Methode ist oft einfacher, da sie keine Schleife durch alle offenen Arbeitsmappen erfordert.


Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, das Konzept zu verstehen:

  1. Speichern und Schließen einer Datei:

    Sub SpeichernUndSchließen()
       Dim cDatei As String
       cDatei = "testdatei.xlsx"
    
       If IstWorkbook_offen(cDatei) Then
           Workbooks(cDatei).Close SaveChanges:=True
           MsgBox cDatei & " wurde gespeichert und geschlossen."
       End If
    End Sub
  2. Daten in eine bestimmte Zelle schreiben:

    Sub DatenInZelle()
       Dim cDatei As String
       cDatei = "testdatei.xlsx"
    
       If IstWorkbook_offen(cDatei) Then
           Workbooks(cDatei).Worksheets(1).Cells(1, 1).Value = "Neuer Wert"
           MsgBox "Daten wurden in " & cDatei & " geschrieben."
       End If
    End Sub

Tipps für Profis

  • Verwendung von xlsb: Beachte die xlsb-Dateiformate, da sie einige Nachteile haben, wie z. B. eine geringere Kompatibilität mit älteren Excel-Versionen. Prüfe, ob dies Auswirkungen auf deine Arbeitsabläufe hat.

  • Optimierung des Codes: Vermeide es, Windows() zur Aktivierung von Arbeitsmappen zu verwenden. Arbeite stattdessen direkt mit dem Workbook-Objekt.

  • Fehlerbehandlung: Implementiere eine robuste Fehlerbehandlung, um unerwartete Ausfälle zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Datei nicht versehentlich überschrieben wird?
Verwende die Funktion zur Überprüfung, bevor du Änderungen vornimmst, und schließe die Datei immer mit SaveChanges:=False, falls du die Änderungen nicht speichern möchtest.

2. Was sind die Nachteile von xlsb-Dateien?
xlsb-Dateien können in einigen älteren Excel-Versionen Probleme verursachen, da sie nicht immer unterstützt werden. Außerdem sind sie nicht so leicht zugänglich wie xlsx-Dateien auf anderen Plattformen.

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