ich bitte um Hilfe zu folgendem Problem.
Ich möchte in einer Excel-Datei mittels Makro prüfen, ob eine bestimmte andere Excel-Datei bereits geöffnet wurde - sofern sie bereits geöffnet wurde, wurde sie jedoch zuvor im schreibgeschützten Modus geöffnet. Insofern funktioniert die Prüfung IsFileOpen leider nicht, zumindest nicht so, wie es Microsoft hierfür anbietet.
Das gleiche Problem, aber ohne Lösung, wurde schon mal gepostet.
https://www.herber.de/forum/archiv/684to688/t684746.htm
Es muss leider sein, dass die "andere" Datei schreibgeschützt geöffnet ist.
Gibt es eine Möglichkeit, IsFileOpen oder ähnliches auf eine Datei anzuwenden, die schreibgeschützt geöffnet wurde?
Hier der Auszug aus meinem Makro, das prima funktioniert, wenn die Datei nicht schreibgeschützt geöffnet wird bzw. würde:
...
If IsFileOpen("H:\APPS\ABC.xls") Then
MsgBox ("Schreibgeschützte Datei ist schon geöffnet")
Else
MsgBox ("Schreibgeschützte Datei ist noch nicht geöffnet")
' Öffnen der Datei in schreibgeschütztem Modus, ohne Rückfrage
Workbooks.Open ("H:\APPS\ABC.xls.xls"), , True
End If
...
wobei die Funktion IsFileOpen in meinem Makro weiter unten (genau gemäß Microsoft) wie nachstehend definiert ist:
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next ' Turn error checking off.
filenum = FreeFile() ' Get a free file number.
' Attempt to open the file and lock it.
Open filename For Input Lock Read As #filenum
Close filenum ' Close the file.
errnum = Err ' Save the error number that occurred.
On Error GoTo 0 ' Turn error checking back on.
' Check to see which error occurred.
Select Case errnum
' No error occurred.
' File is NOT already open by another user.
Case 0
IsFileOpen = False
' Error number for "Permission Denied."
' File is already opened by another user.
Case 70
IsFileOpen = True
' Another error occurred.
Case Else
Error errnum
End Select
End Function
Vielen Dank schon mal im voraus
Mansell