Abfrage ob EXCElDAtei bereits geöffnet ist

Hallo.

Wir führen öfters Abfragen auf unserem Server durch. Dabei kommt es häufig vor, dass Dateien aufgerufen und geöffnet werden, die bereits durch andere Mitarbeiter geöffnet sind. Kennt jemand eine Abfrage, mit der man vor öffnen der jeweiligen Datei abfragen kann, ob die entsprechende Datei bereits geöffnet ist?

Grüße und Dank, Aiko.

Wir führen öfters Abfragen auf unserem Server durch. Dabei
kommt es häufig vor, dass Dateien aufgerufen und geöffnet
werden, die bereits durch andere Mitarbeiter geöffnet sind.
Kennt jemand eine Abfrage, mit der man vor öffnen der
jeweiligen Datei abfragen kann, ob die entsprechende Datei
bereits geöffnet ist?

Hallo Aiko,

ein „Ede“ hat mal diesen Code gebastelt:

Function TestOpen(sFile As String) As Integer
If Dir(sFile) = "" Then
 TestOpen = 2
Else
 On Error GoTo ERRORHANDLER
 Open sFile For Random Access Read Lock Read Write As #99
 Close #99
End If
ERRORHANDLER:
If Err = 70 Then TestOpen = 1
End Function

wobei 0…datei ist nicht geöffnet
1…datei ist bereits geöffnet
2…datei fehlt

Ich hab’s nicht getestet.

Gruß
Reinhard

Hallo Reinhard.

Danke für die Antwort. Ich habe versucht, die Funktion bei uns einzubauen und bekomme als Ergebnis (wahrheitsgemäß) heraus, dass TestOpen = 1 ist (weil ich die Testdatei geöffnet habe). Mein Problem ist nur, dass ich den Wert von TestOpen nicht aus der Funktion in den normalen Prozess übergeben kann. Ich muss dazu gestehen, dass ich mit Funktionen nicht so viel arbeite. Wie kann ich also das Ergebnis (sprich den Wert von TestOpen) verwenden?

Grüße, Aiko.

Mein Problem ist nur, dass ich den Wert von TestOpen nicht aus
der Funktion in den normalen Prozess übergeben kann.

Wie kann ich also das Ergebnis (sprich den Wert von TestOpen)
verwenden?

Hallo Aiko,

Sub Test()
MsgBox TestOpen(„C:\test\beispiel.xls“)
End Sub

Sub Test2()
If TestOpen(„C:\test\beispiel.xls“)=1 then
'Code
End If
End Sub

Gruß
Reinhard

Hallo Reinhard.

vielen Dank für die Antwort. Ich habe inzwischen noch eine andere Möglichkeit gefunden, die läuft. Ich weiß aber noch nicht, welche Variante ich für (funktions)sicherer halte.

zur Info: Ich hatte folgendes probiert:

If TestOpen=1 then
msgbox …

Warum ich dann nichts angezeigt bekommen habe ist mir jetzt klar.

Grüße, Aiko.