Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
872to876
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
872to876
872to876
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

IsFileOpen bei schreibgeschützt-geöffneter Mappe??

IsFileOpen bei schreibgeschützt-geöffneter Mappe?
31.05.2007 16:35:38
Mansell
Guten Tag,
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: IsFileOpen bei schreibgeschützt-geöffneter Mappe?
31.05.2007 18:03:32
Luschi
Hallo Mansell,
die von Dir erwähnte MS-Routine "IsFileOpen" prüft, ob ein anderer User die Datei (im Netzwerk") bereits geöffnet hat. Dann kannst Du diese Datei nur noch schreibgeschütz öffnen.
Wenn ich Dich richtig verstanden habe, willst Du aber wissen, ob auf Deinem PC die Datei von Excel schon geöffnet ist und ob die im schreibschutzmodus geöffnet wurde.
Dafür mußt du in einer Schleife alle Workbooks (geöffnete Arbeitsmappen) durchlaufen und auf die Eigenschaft "ReadOnly" prüfen.
Gruß von Luschi
aus klein-Paris

AW: IsFileOpen bei schreibgeschützt-geöffneter Mappe?
31.05.2007 19:10:28
Mansell
Servus Luschi aus Klein-Paris (Klaa-Paris?),
danke für den Hinweis. Genau so ist es, ich möchte prüfen, ob die Datei vom eigenen PC des jeweiligen Nutzers bereits geöffnet wurde (das Makro wird durch verschiedene Leute benutzt, wobei jeder Nutzer seine persönliche Datei hat. Da ich aber nicht jedem Nutzer zumuten will, die Datei von Hand aufzurufen, aber auch nicht weiss, ob er sie schon offen hat oder nicht, hab ich halt dieses Problem.).
Zwei Punkte noch:
Müssen dann für die von Dir vorgeschlagene Schleife alle Excel-Dateien, die gerade offen sind, schreibgeschützt sein? Wäre schlecht, wenn das eine Bedingung wäre.
Hättest Du noch in Kurzform den Code für eine solche Schleife zur Hand? Wäre prima.
Viele Grüße
Mansell

Anzeige
AW: IsFileOpen bei schreibgeschützt-geöffneter Map
31.05.2007 21:19:39
Uduuh
Hallo,
ohne Schleife, kurz und schmutzig:

Function IsOpen(strDatei As String) As Boolean
Dim wkbTest As Workbook
On Error Resume Next
Set wkbTest = Workbooks(strDatei)
IsOpen = Not wkbTest Is Nothing
End Function
Sub tt()
MsgBox IsOpen("Test.xls")
End Sub


Gruß aus’m Pott
Udo

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige