Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
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

Benachrichtung wenn Datei verwendet wird

Benachrichtung wenn Datei verwendet wird
17.02.2015 15:24:25
Maren
Hallo,
ich weiß einfach nicht mehr weiter und brauche eure Hilfe!
Eine Datei (Angebote_2015.xlsm) liegt in einem Ordner (Test) und wird mittels VB-Script geöffnet. Da die Datei von mehreren Bearbeitern verwendet wird, soll eine Meldung ausgegeben werden, wenn die Datei bereits geöffnet ist.
Folgende Codes habe ich mir anhand von Beiträgen in Foren zusammengestellt:

Variante I

Public Function Datei_in_Benutzung(Dateiname As String) As Boolean
On Error Resume Next
Close #1
Open Dateiname For Random Access Read Lock Read Write As #1
Datei_in_Benutzung = Err.Number  0
Close #1
End Function
Public Sub Testen()
MsgBox "Die Angebotsliste wird gerade von einem anderen Bearbeiter benutzt!
Datei_in_Benutzung ("c:\Test\Angebote_2015.xlsm")
End Sub

Variante II

Public Function DokumentGeoeffnet(Name As String) As Boolean
On Error Resume Next
DokumentGeoeffnet = Not CBool(Name  Application.Workbooks(Name).Name)
End Function
Public Sub Test()
If DokumentGeoeffnet("Angebote_2015.xlsm") Then
Else
End If
End Sub
Beide Varianten funktionieren nur beim Kompilieren - aber nicht, wenn die Datei geöffnet wird, obwohl diese von einem anderen Benutzer bearbeitet wird.
Was mache ich falsch?

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Benachrichtung wenn Datei verwendet wird
17.02.2015 15:34:24
Roger
Probier es mal damit
Public Sub starte_Datei()
ActiveWindow.WindowState = xlMinimized
Dim cb As Workbook
Dim strDatei As String, strUsername, test
Set cb = ActiveWorkbook
strDatei = cb.Path & "\user.txt"
If cb.ReadOnly = True Then
Open strDatei For Input As #1
Line Input #1, strUsername
MsgBox "Aus Gründen des Datenverlustes wird die Datei geschlossen!" & Chr(13) & "Bitte  _
warten Sie bis " & _
"Benutzer/in " & _
strUsername _
& " die Datei geschlossen hat!", _
vbOKOnly + vbInformation, _
"Hinweis:"
cb.Close (False)
Exit Sub
'MsgBox "Datei wird gerade bearbeitet von " & strUsername, vbCritical, "Bitte beachten"
Else
ActiveWindow.WindowState = xlMaximized
Close #1
Open strDatei For Output As #1
Print #1, Environ("Username")
End If
Close #1
End Sub

Gruss
Roger
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige