Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1544to1548
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pfüfen ob eine freigegebene Arbeitsmappe geäffnet

Pfüfen ob eine freigegebene Arbeitsmappe geäffnet
10.03.2017 09:40:23
r2d2
Hallo,
ich möchte gerne prüfen, ob eine freigegebene Arbeitsmappe geöffnet ist.
Ich habe es mit diesem Code versucht:

Function IsWorkbookOpen(strWB As String) As Boolean
On Error Resume Next
IsWorkbookOpen = Not Workbooks(strWB) Is Nothing
End Function

Sub test()
If IsWorkbookOpen(DATEI) Then
msgbox "Datei geöfnet"
Exit Sub
Else
msgbox " Datei ungeöffnet"
Exit Sub
End If
End Sub

Leider funktioniert das aber nicht bei einer freigegebnen Arbeitsmappe.
Weiß jemand eine Lösung?
Danke und Gruß r2d2

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfüfen ob eine freigegebene ...
10.03.2017 09:57:07
Herbert
Hallo,
das geht mit einem Code von Hans persönlich. Den Code in ein StandardModul eintragen:
Sub Aufruf()
Dim sFile As String
sFile = InputBox(prompt:="Dateiname:", Default:="Personl.xls")
If WkbExists(sFile) Then
MsgBox "Mappe ist offen!"
Else
MsgBox "Mappe ist geschlossen!"
End If
End Sub
Function WkbExists(sFile As String) As Boolean
Dim wkb As Object
On Error Resume Next
Set wkb = Workbooks(sFile)
If Err = 0 And Not wkb Is Nothing Then WkbExists = True
On Error GoTo 0
End Function
Servus
AW: Pfüfen ob eine freigegebene ...
10.03.2017 10:09:34
r2d2
Super! Danke!
Funktioniert das dann auch bei "normalen" Arbeitsmappen oder nur bei freigegebenen?
Anzeige
AW: Bei allen! owt
10.03.2017 10:10:30
Herbert
,,
AW: Bei allen! owt
10.03.2017 10:14:41
r2d2
?
AW: Bei allen! owt
10.03.2017 10:15:13
r2d2
Ach so, stand in der Überschrift... Danke.
AW: Bei allen! owt
10.03.2017 10:21:37
r2d2
Geht leideer doch nicht!
Wenn ich selber die Datei zuvor öffne, dann geht der Code.
Wenn aber ein Mitarbeiter die Datei öffnet, dann geht der Code nicht.
Geht das mit im Netzwerk befindlichen Dateien nicht?
AW: Bei allen! owt
10.03.2017 10:25:52
Herbert
Hast Du auch den korrekten Dateinamen eingegeben?
AW: Bei allen! owt
10.03.2017 10:27:03
r2d2
Ja, sonst würde er mir ja wenn ich die Datei geöffnet habe auch anzeigen das sie nicht geööfnet sei.
AW: Bei allen! owt
10.03.2017 10:29:16
Herbert
Dann verstehe ich Dein Problem nicht! Dieser Code prüft, ob die von Dir genannte Datei offen ist oder nicht und gibt eine entsprechende Meldung aus. Hast Du auch den kompletten Dateinamen inkl. Suffix angegeben?
Anzeige
AW: Bei allen! owt
10.03.2017 10:33:37
r2d2
Es nutz mir doch nix, wenn mir angezeigt wird, daß ich selber die Datei geöffnet habe - das weiß ich doch.
Mir geht es darum zu prüfen, ob ein Kellege von mir die Datei geöffnet hat.
Und das gunktioniert eben nicht.
Wenn ein Kollege die Datei öffnet und ich dann den Code aktiviere wird mir angezeigt, daß die Datei nicht geöffnet ist - also "Vorlage geschlossen"
Hier nochmal der Code:
Function WkbExists(sFile As String) As Boolean
Dim wkb As Object
On Error Resume Next
Set wkb = Workbooks(sFile)
If Err = 0 And Not wkb Is Nothing Then WkbExists = True
On Error GoTo 0
End Function

Sub test()
If WkbExists("TESTDATEI.XLSX") Then
msgbox "Datei geöffnet - Bearbeitung nicht möglich"
Exit Function
Else
msgbox "Vorlage geschlossen"
Exit Function
End If
End Sub

Anzeige
AW: Bei allen! owt
10.03.2017 10:39:37
Herbert
Wenn ein Kollege eine Datei geöffnet hat, die Du öffnen willst, bekommst Du doch autom. einen Hinweis! Also, warum willst Du es dann noch einmal prüfen?
Außerdem ist von freigegebenen Am grundsätzlich abzuraten. Für das Warum kannst Du mal danach googeln.
Servus
AW: Bei allen! owt
10.03.2017 10:44:02
r2d2
Ich möchte mit einer "Servicedatei" eine bestimmte Arbeitsmappe "pflegen".
Deshalb muß ich, bevor ich dei zu pflegende Datei mittels VBA öffne und "pflege" prüfen, ob ggf. jemand die Datei geöffnet hat, weil dann kann ich die "Prlege" nicht durchführen.
Da hier mit freigegebenen Arbeitsmappen gearbeitet wird kann ich mich dem nicht entziehen und brauche eine gangbare Lösung. Kann ich sondt irgendwie mittels VBA auslesen, ob jemamd in einer freigegebenen Arbeitsmappe gerade drinn ist, wenn ich den "Öffnungszustand" nicht abfrangen kann?
Anzeige
AW: Bei allen! owt
10.03.2017 10:47:11
Herbert
So wie ich das sehe, geht das nicht und Du musst die Datei manuell öffnen und dann Deine Makros ausführen.
Servus
AW: Bei allen! owt
10.03.2017 10:49:38
r2d2
Aber kann man nicht per VBA "auslesen" wer aktuell in der freigegebenen Datei drinn ist?
AW: Bei allen! owt
10.03.2017 12:42:07
Michael
Hallo!
Aber kann man nicht per VBA "auslesen" wer aktuell in der freigegebenen Datei drinn ist?
Man kann...
Sub NutzerInfo()
MsgBox "Achtung: Es nutzen gerade " & UBound(ThisWorkbook.UserStatus) & _
" Person(en) diese Mappe!", vbInformation
End Sub
LG
Michael
AW: Bei allen! owt
10.03.2017 13:29:30
r2d2
Leider auch nicht - mir wird 1 angezeigt obohl neben mir noch 2 anderer User drinn sind.
Anzeige
AW: Bei allen! owt
10.03.2017 15:12:33
Michael
Sicher?
In meinem Bsp-Code bezieht sich der UserStatus auf die Arbeitsmappe, in der auch der Code liegt (ThisWorkbook) - wenn Du aber den UserStatus einer anderen Mappe ausgeben willst, musst Du ggf. auf die richtige Mappe verweisen, also...
Sub NutzerInfo()
Dim Wb As Workbook: Set Wb = Workbooks("DieFreigegebeneMappe.xlsx")
MsgBox "Achtung: Es nutzen gerade " & UBound(Wb.UserStatus) & _
" Person(en) diese Mappe!", vbInformation
End Sub
LG
Michael
AW: Bei allen! owt
13.03.2017 09:55:31
r2d2
Danke!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige