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

Prüfen ob dieselbe Datei bereits geöffnet ist

Prüfen ob dieselbe Datei bereits geöffnet ist
Markus
Hallo liebe Forumsmitglieder,
hab schon viele gute und hilfreiche Beiträge aus diesem Forum finden können...
Nun stehe ich vor einem Problem, wo ich bereits 3 Tage lang keine für mich zufriedenstellende Lösung finden konnte!
Ich möchte eine Datei in einem Netzwerk öffnen... Diese Datei verwenden mehrere User...
Nun soll über Workbook_Open() - in der selben Datei- geprüft werden, ob diese Datei, also die ich gerade öffne bereits durch einen anderen User verwendet wird! Das schwierige Dabei ist es die Datei die ich gerade öffne selber zu prüfen, da ich aus keiner Schaltfläche oder einer anderen Datei diese Datei öffne!
Nun kommt aber noch was: Die Meldung: Dokument wird bereits verwendet...
soll unterdrückt werden, das geht nicht mit Application.DisplayAlert = False! Wenn die Datei im ReadOnly-Modus ist soll sie direkt ohne MS-Prüfung, ob Sie bereits verwendet wird in den ReadOnly - Schreibschutzmodus geöffnet werden, und dann mittels eigner Messageboxen den User darüber informieren, dass die Datei durch den User: xxx verwendet wird und dann soll die Datei geschlossen werden, ohne Speicherung und auch das Makro Workbook BeforeClose() soll nicht ausgeführt werden!
Ich hoffe es kann mir jemand helfen... vielen Dank schon mal!
Markus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Prüfen ob dieselbe Datei bereits geöffnet ist
11.01.2010 11:51:36
JoWE
Markus,
ich hatte da mal was gefunden, weiß nicht mehr wo und von wem:
Sub YourMacro()
Dim strFileName As String
strFileName = "C:\TestDir\TestFile.xls"
If Not FileLocked(strFileName) Then
Documents.Open strFileName
End If
End Sub


Function FileLocked(strFileName As String) As Boolean
On Error Resume Next
Open strFileName For Binary Access Read Write Lock Read Write As #1
Close #1
If Err.Number  0 Then
MsgBox "Error #" & Str(Err.Number) & " - " & Err.Description & vbCr & "File is already  _
in use!"
FileLocked = True
Err.Clear
End If
End Function
Gruß
Jochen
Anzeige
AW: Prüfen ob dieselbe Datei bereits geöffnet ist
11.01.2010 13:03:32
Markus
Hallo Jochen, danke für Deine Nachricht,
leider ist es so, dass ich wie auch bei meinen bisherigen Versuchen, die Datei geschlossen wird, die ich gerade öffne, da geprüft wird, ob die Datei auf die ich gerade zugreife auch geöffnet ist....
So wird die Datei beim öffnen direkt wieder geschlossen!
Hat jemand noch eine Idee?
AW: Prüfen ob dieselbe Datei bereits geöffnet ist
12.01.2010 14:05:53
MB
Ich glaube die Meldung Dokument wird verwendet...
kann man, wenn man die zu öffnende Datei anklickt nicht unterbinden,
Ich mach es jetzt über:
If ActiveWorkbook.ReadOnly = True Then
Aktiver = ActiveWorkbook.WriteReservedBy
MsgBox "Benutzt von " & Aktiver
MsgBox "Bitte versuchen Sie es später wieder!"
ActiveWorkbook.Close savechanges:=False
Exit Sub
End If
End Sub
Wenn jemand noch ne Idee hat, wäre ich ihm dankbar!
VG Markus
Anzeige
AW: Prüfen ob dieselbe Datei bereits geöffnet ist
12.01.2010 22:41:17
Markus
Den einzigen Code um die Meldung zu unterdrücken:
.VBA-Code #1
Public Sub RunExcelWithoutAddIns1()
Shell """C:\Programme\Microsoft Office\Office\Excel.exe"" /automation", vbNormalFocus
End Sub
.VBA-Code #2
Public Sub RunExcelWithoutAddIns2()
CreateObject("WScript.Shell").Run "Excel.exe /automation", vbNormalFocus
End Sub
kann ich nicht einbauen....
Habe jetzt folgende Variante verwendet:
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

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige