Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBS-Prüfe ob eine bestimmte Excel Datei offen

VBS-Prüfe ob eine bestimmte Excel Datei offen
14.04.2016 11:39:32
Vincent
Hallo zusammen,
ich möchte über VBS eine bestimmte Excel Datei überprüfen ob sie gerade offen ist. Über Internet habe ich die folgenden Codes gefunden. Es funktioniert leider nicht auf meiner Seite, wobei diese Lösung richtig markiert wurde. Ich habe eine Zeile inzwischen hinzugefügt um zu testen und schauen ob es eine Ausgabe gibt. Nach der Ausführung wird nichts bei mir angezeit. Davon gehe ich aus dass die von mir fett markierten Codes nicht richtig ist. Ist meine Vermutung falsch? Oder hat jemand Ahnung woran es liegt?
Vielen Dank für deine Hilfe im Voraus.

ExcelFileName = "some.xlsx"
On Error Resume Next
Set xl = GetObject(, "Excel.Application")  'attach to running Excel instance
If Err Then
If Err.Number = 429 Then
WScript.Echo "Workbook not open (Excel is not running)."
Else
WScript.Echo Err.Description & " (0x" & Hex(Err.Number) & ")"
End If
WScript.Quit 1
End If
On Error Goto 0
Set wb = Nothing
For Each obj In xl.Workbooks
If obj.Name = ExcelFileName Then  'use obj.FullName for full path
msgbox obj.FullName  'nur zum testen und schauen ob es eine Ausgabe gibt.
Set wb = obj
Exit For
End If
Next
If wb Is Nothing Then
WScript.Echo "Workbook not open."
WScript.Quit 1
End If

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBS-Prüfe ob eine bestimmte Excel Datei offen
14.04.2016 11:41:43
Vincent
Ergäzung:
für die Code "msgbox obj.Name" wird ebenfalls nicht angezeigt

AW: VBS-Prüfe ob eine bestimmte Excel Datei offen
14.04.2016 11:58:27
Fennek
Hallo,
Ungeprüft:

Dim wb as workbook
For each wb in workbooks
Debug.print wb.name
Next
Mfg

AW: VBS-Prüfe ob eine bestimmte Excel Datei offen
14.04.2016 12:36:13
japes36
Hallo, ich hatte das mal folgend gelöst bei mir. geprüft ob Datei schon geöffnet, wenn nicht, dann öffnen...
Function isWorkbookOpen(bookName As String) As Boolean
Dim vbResult As Boolean
Dim wbs As Workbook
vbResult = False
For Each wbs In Workbooks
If UCase(wbs.name) = UCase(bookName) Then
vbResult = True
Exit For
End If
Next wbs
isWorkbookOpen = vbResult
End Function

    If isWorkbookOpen("Dateiname.xlsx") = False Then
Workbooks.Open ("pfad:\Dateiname.xlsx")
End I

Anzeige
AW: VBS-Prüfe ob eine bestimmte Excel Datei offen
14.04.2016 13:06:10
Vincent
Das funktioniert leider bei mir nicht. Ich glaub deine Codes VBA sind, sondern nicht VBS...

AW: VBS-Prüfe ob eine bestimmte Excel Datei offen
14.04.2016 13:07:41
japes36
oops...Du hast Recht. bin von VBA ausgegangen. mea culpa :)

AW: VBS-Prüfe ob eine bestimmte Excel Datei offen
14.04.2016 13:30:08
Vincent
Hallo Fennek,
habe mit dener Code versucht, geht leider auch nicht. Deine Code ist eigentlich auch VBA

Anzeige
VBS-Prüfe ob eine bestimmte Excel Datei offen
14.04.2016 16:19:55
Anton
Hallo Vincent,
so?:
ExcelFileName = "attrib.xlsm"' anpassen
On Error Resume Next
Set xl = GetObject(, "Excel.Application")  'attach to running Excel instance
If Err.Number=0 Then
For Each obj In xl.Workbooks
If obj.Name = ExcelFileName Then  'use obj.FullName for full path
MsgBox obj.FullName  'nur zum testen und schauen ob es eine Ausgabe gibt.
Set wb = obj
Exit For
End If
Next
If wb Is Nothing Then
WScript.Echo "Workbook not open."
End If
Else
MsgBox Err.Description & " (0x" & Err.Number & ")"
End If
Set xl = Nothing
mfg Anton

Anzeige
@vin0100rt oT
15.04.2016 15:34:02
Anton
;
Anzeige
Anzeige

Infobox / Tutorial

VBS: Überprüfen, ob eine bestimmte Excel-Datei offen ist


Schritt-für-Schritt-Anleitung

Um mit VBS zu überprüfen, ob eine bestimmte Excel-Datei offen ist, kannst du den folgenden Code verwenden. Er überprüft, ob die Datei bereits geöffnet ist, und gibt eine entsprechende Nachricht aus:

ExcelFileName = "some.xlsx"
On Error Resume Next
Set xl = GetObject(, "Excel.Application")  ' An eine laufende Excel-Instanz anhängen
If Err Then
    If Err.Number = 429 Then
        WScript.Echo "Workbook not open (Excel is not running)."
    Else
        WScript.Echo Err.Description & " (0x" & Hex(Err.Number) & ")"
    End If
    WScript.Quit 1
End If
On Error GoTo 0
Set wb = Nothing
For Each obj In xl.Workbooks
    If obj.Name = ExcelFileName Then  ' Verwende obj.FullName für den vollständigen Pfad
        MsgBox obj.FullName  ' Nur zum Testen und Überprüfen der Ausgabe
        Set wb = obj
        Exit For
    End If
Next
If wb Is Nothing Then
    WScript.Echo "Workbook not open."
    WScript.Quit 1
End If

Häufige Fehler und Lösungen

  1. Fehler: Keine Ausgabe bei MsgBox

    • Lösung: Stelle sicher, dass die Excel-Datei mit dem richtigen Namen angegeben ist. Überprüfe auch, ob Excel tatsächlich geöffnet ist.
  2. Fehler: "Workbook not open (Excel is not running)."

    • Lösung: Dies bedeutet, dass kein Excel-Prozess läuft. Stelle sicher, dass Excel geöffnet ist, bevor du das Skript ausführst.
  3. Fehler: "Err.Number = 429"

    • Lösung: Dies weist darauf hin, dass die Excel-Instanz nicht gefunden wurde. Überprüfe, ob Excel bereits läuft.

Alternative Methoden

Eine alternative Methode zur Überprüfung, ob eine Excel-Datei geöffnet ist, könnte die Verwendung einer Funktion sein, die den Status der Arbeitsmappe überprüft. Hier ist ein Beispiel:

Function isWorkbookOpen(bookName As String) As Boolean
    Dim vbResult As Boolean
    Dim wbs As Workbook
    vbResult = False
    For Each wbs In Workbooks
        If UCase(wbs.Name) = UCase(bookName) Then
            vbResult = True
            Exit For
        End If
    Next wbs
    isWorkbookOpen = vbResult
End Function

If isWorkbookOpen("Dateiname.xlsx") = False Then
    Workbooks.Open ("pfad:\Dateiname.xlsx")
End If

Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von VBS zum Überprüfen, ob eine Excel-Datei offen ist:

  • Beispiel 1: Überprüfen, ob "meinDokument.xlsx" geöffnet ist und es bei Bedarf öffnen.

  • Beispiel 2: Verwende eine Schleife, um alle geöffneten Arbeitsmappen aufzulisten und ihre Namen auszugeben.

For Each wb In Workbooks
    WScript.Echo wb.Name
Next

Tipps für Profis

  • Verwende On Error Resume Next sparsam, um unerwartete Fehler zu vermeiden.
  • Teste deinen VBS-Code regelmäßig, um sicherzustellen, dass alle Pfade korrekt sind.
  • Nutze Debug.Print für eine bessere Fehlersuche statt MsgBox, um die Konsolenausgabe zu verwenden.

FAQ: Häufige Fragen

1. Kann ich VBS-Skripte in Excel direkt ausführen?
Ja, VBS-Skripte können über den Windows Script Host (WSH) ausgeführt werden, aber nicht direkt in Excel.

2. Was ist der Unterschied zwischen VBS und VBA?
VBS (Visual Basic Script) ist eine Skriptsprache für Automatisierungsaufgaben, während VBA (Visual Basic for Applications) in Microsoft Office-Anwendungen integriert ist und erweiterte Funktionen bietet.

3. Wo kann ich mehr über VBS lernen?
Es gibt viele Online-Ressourcen, Tutorials und Foren, die sich mit VBS beschäftigen. Besuche Plattformen wie Stack Overflow oder Microsoft Docs für weitere Informationen.

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