Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Prüfen ob dieselbe Datei bereits geöffnet ist | Herbers Excel-Forum


Betrifft: Prüfen ob dieselbe Datei bereits geöffnet ist von: Markus
Geschrieben am: 11.01.2010 10:57:52

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

  

Betrifft: AW: Prüfen ob dieselbe Datei bereits geöffnet ist von: JoWE
Geschrieben am: 11.01.2010 11:51:36

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


  

Betrifft: AW: Prüfen ob dieselbe Datei bereits geöffnet ist von: Markus
Geschrieben am: 11.01.2010 13:03:32

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?


  

Betrifft: AW: Prüfen ob dieselbe Datei bereits geöffnet ist von: MB
Geschrieben am: 12.01.2010 14:05:53

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


  

Betrifft: AW: Prüfen ob dieselbe Datei bereits geöffnet ist von: Markus
Geschrieben am: 12.01.2010 22:41:17

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




Beiträge aus den Excel-Beispielen zum Thema "Prüfen ob dieselbe Datei bereits geöffnet ist "