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

Datei (im Netzwerk) geöffnet, dann nächste

Datei (im Netzwerk) geöffnet, dann nächste
11.11.2007 14:06:19
MichiM
Hallo,
ich habe die Datei time_daten.xls auf dem Nertzwerkserver gespeichert.
Damit nun mehrere Clients nahezu gleichzeitig auf diese Datei zugreifen können, habe ich Hilfsdateien angelegt, welche beim öffnen die Werte aus time_daten.xls kopieren - die Datendatei bleibt also nur wenige Sekungen geöffnet.
Mit einem Makro will ich nun die Hilfsdatei time1.xls geöffnet werden.
Ist diese schon geöffnet (egal ob auf dem eigenem oder einem anderen Client), soll time2.xls geöffnet werde. Ist auch diese durch einen Benutzer bereits geöffnet, dann time3.xls.
Wenn alle Dateien (time1.xls ... time5.xls) bereits geöffnet und gesperrt sind, soll eine MsgBox und das Makro abgebrochen/beendet werden erscheinen.
Das mit dem einzelnen öffnen, kriege ich ja noch hin - aber wie ich eine bereits geöffnete Datei (im Netzwerk!) überprüfe und dann auf die nächste wechsel, stellt mich vor ein Rätsel.
Hat hier jemand einen Tip für mich (VBA-Anfänger - darf ruhig etwas ausführlicher sein :-)
Gruss
MichiM

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei (im Netzwerk) geöffnet, dann nächste
11.11.2007 14:23:43
Daniel
Hi
wenn du eine Datei öffnen willst, die aber schon jemand anders geöffnet hat, kannst du sie nur schreibgeschützt öffnen.
Ob jetzt eine geöffnete Datei schreibgeschützt ist oder nicht, kannst du mit der Eigenschaft:
Activeworkbook.ReadOnly abfragen, der Wert ist jeweils TRUE oder FALSE
das kannst du in einer entsprechenden Schleife ausnutzen, die versucht, deine 5 Dateien nacheineander zu öffnen, solange bis sie eine gefunden hat, die nicht schreibgeschützt ist:

Sub Test()
Dim i As Long
Dim Pfad As String
Pfad = "C:\DeinPfad\"
For i = 1 To 5
Workbooks.Open Pfad & "time" & i & ".xls"
If ActiveWorkbook.ReadOnly = True Then
ActiveWorkbook.Close
Else
Exit For
End If
Next
If i > 5 Then
MsgBox "Es konnte keine Datei zum bearbeiten geöffnet werden"
Else
MsgBox "geöffnete Datei: Time" & i & ".xls"
End If
End Sub


Gruß, Daniel
PS: nicht getestet

Anzeige
AW: Datei (im Netzwerk) geöffnet, dann nächste
11.11.2007 15:41:59
MichiM
Hi Daniel,
soweit funktioniert das - danke.
Allerdings stellt sich gleich das nächste Problem:
Wenn Datei time1.xls schon geöffnet ist, fragt Excel ob die Datei schreibgeschützt geöffnet werden soll usw. Mit Klick auf abbrechen, öffnet er die nächste Datei usw.
Kann man den Klick auf "abbrechen" vorgeben, wenn die Datei bereits geöffnet ist? Am besten, ohne das die Meldung überhaupt erscheint?
Ich habe hierzu folgendes gefunden (glaube, dass sollte in etwa das richtige sein):
https://www.herber.de/forum/archiv/512to516/t515047.htm
Du kannst noch mehr parameter angeben beim Öffnen.
Workbooks.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMRU)

Aber wie gebe ich das an?
Zur Zeit sieht das ganze so aus - halt nur mit der Fehlermeldung:

For i = 1 To 5
Workbooks.Open Pfad & dat & i & ".xls"
If ActiveWorkbook.ReadOnly = True Then
ActiveWorkbook.Close
Else
Exit For
Workbooks.Open Filename:=Pfad + dat + i + ".xls"
strdatxls = strdat + i + ".xls"
MsgBox "Nutzerdatei " & i & " wurde geöffnet"
End If
Next


Gruss
MichiM

Anzeige
AW: Datei (im Netzwerk) geöffnet, dann nächste
11.11.2007 15:49:00
Daniel
Hi
naja, das bringt dir ja nichts, wenn du die Datei auf diese weise Schreibgeschützt öffnest, ist sie immer schreibgeschützt, und das ganze Prinzip funktioniert nicht mehr.
folgedes sollte gehen, dadurch wird die Meldung von Excel unterdrückt:

For i = 1 To 5
Application.DisplayAlerts:= false    
Workbooks.Open Pfad & dat & i & ".xls"
 Application.DisplayAlerts:= true
If ActiveWorkbook.ReadOnly = True Then
ActiveWorkbook.Close
Else
Exit For
Workbooks.Open Filename:=Pfad + dat + i + ".xls"
strdatxls = strdat + i + ".xls"
MsgBox "Nutzerdatei " & i & " wurde geöffnet"
End If
Next


Gruß, Daniel

Anzeige
AW: Datei (im Netzwerk) geöffnet, dann nächste
11.11.2007 16:12:00
MichiM
Hi,
anstatt die Meldung zu unterdrücken (was es im übrigen bei mir nicht tut), soll die Antwort vom Makro vorgegeben werden - also abbrechen, damit die Schleife die nächste Datei öffnet.
Kann man dies vorgeben oder muss der Nutzer den Button grundsätzlich manuell anklicken?
Gruss
MichiM

AW: Datei (im Netzwerk) geöffnet, dann nächste
11.11.2007 16:20:59
Josef
Hallo Michi,
versuch's mal so.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Enum XL_FILESTATUS
    XL_UNDEFINED = -1
    XL_CLOSED
    XL_OPEN
    XL_DONTEXIST
End Enum

Public Function FileStatus(xlFile As String) As XL_FILESTATUS

On Error Resume Next

Dim File%: File = FreeFile

Err.Clear

Open xlFile For Binary Access Read Lock Read As #File
Close #File

Select Case Err.Number
    Case 0: FileStatus = XL_CLOSED
    Case 70: FileStatus = XL_OPEN
    Case 76: FileStatus = XL_DONTEXIST
    Case Else: FileStatus = XL_UNDEFINED
End Select

End Function

Sub xx()
Dim i As Integer
Dim strFile As String
Dim bDone As Boolean

For i = 1 To 5
    
    strFile = Pfad & dat & i & ".xls"
    
    If FileStatus(strFile) = XL_CLOSED Then
        Workbooks.Open strFile
        MsgBox "Nutzerdatei " & i & " wurde geöffnet"
        bDone = True
        Exit For
    End If
    
Next

If Not bDone Then
    MsgBox "Nutzerdatei konnte nicht geöffnet werden!"
End If

End Sub

Gruß Sepp

Anzeige
AW: Datei (im Netzwerk) geöffnet, dann nächste
11.11.2007 17:50:00
MichiM
Hola Sepp,
super, das klappt perfekt.
Danke.
Gruss
MichiM

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige