Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
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
Inhaltsverzeichnis

Warten bis andere Datei geschlossen

Warten bis andere Datei geschlossen
25.02.2015 09:45:41
Werner
Hallo zusammen!
Ich habe hier einen Code aus diesem genialen Forum "geklaut" und etwas angepasst.
Sub Master_Test_offen()
Dim iOpen As Integer
Dim sFile As String
sFile = ThisWorkbook.Worksheets(1).Range("C3").Value
Do While Test_offen(sFile) = 1
Loop
Workbooks.Open sFile
End Sub
Private Function Test_offen(sPath As String) As Integer
If Dir(sPath) = "" Then
TestOpen = 2
Else
On Error GoTo ERRORHANDLER
Open sPath For Random Access Read Lock Read Write As #1
Close #1
End If
ERRORHANDLER:
If Err = 70 Then Test_offen = 1
End Function
Sub Master_schliessen()
Application.CutCopyMode = False
Application.Wait (Now + TimeValue("0:00:01"))
Workbooks("xyz.xlsm").Close True
Application.Wait (Now + TimeValue("0:00:02"))
End Sub Ich möchte eine Datei erst dann durch andere Anwender öffnen lasen, wenn sie tatsächlich geschlossen ist.
Es kann dabei ja vorkommen, dass mehrere Personen fast gleichzeitig die Masterdatei öffnen wollen.
Ich weiß - das Thema ist nicht neu.
Wenn dann Daten in die Master-Datei geschrieben wurden kommt die Aufforderung, die schreibgeschützte Datei unter einem anderen Namen zu speichern.
Wartet der Code oben doch nicht, bis die Haupt-Datei tatsächlich zu ist?
Gruß und Danke schon mal vorab.
Werner

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Warten bis andere Datei geschlossen
26.02.2015 13:12:15
fcs
Hallo Werner,
ich würde die Makros wie folgt aufbauen, so dass nur im Sekundentakt geprüft wird, ob die Datei geöffnet ist und nach 10 Versuchen der Öffnen-Vorgang abgebrochen wird.
Es macht jedenfall keinen Sinn die Prüfung, ob Datei geöffnet schnellstmöglich im Takt von Bruchteilen von Sekunden auszuführen.
Außerdem solltest du alle Werte Prüfen, die dein Testmakro zurückgeben kann. Sonst endet das Ganze schnell in einer Endlosschleife.
Gruß
Franz
Option Explicit
Sub Master_Test_offen()
Dim iOpen As Integer, iCount As Integer
Dim sFile As String
sFile = ThisWorkbook.Worksheets(1).Range("C3").Value
Do
iCount = iCount + 1
iOpen = Test_offen(sFile)
If iOpen  1 Then Exit Do
If iCount = 10 Then Exit Do 'Ausstieg nach 10 Versuchen
Application.Wait (Now + TimeValue("0:00:01")) 'Wartezeit zwischen Versuchen
Loop
Select Case iOpen
Case 2
MsgBox "Datei " & sFile & " wurde nicht gefunden"
Case 0
Workbooks.Open sFile
Case 1
MsgBox "Masterdatei ist nach 10 Sekunden immer noch geschlossen"
End Select
End Sub
Private Function Test_offen(sPath As String) As Integer
Dim TestOpen As Integer
TestOpen = 0
If Dir(sPath) = "" Then
TestOpen = 2
Else
On Error GoTo ERRORHANDLER
Open sPath For Random Access Read Lock Read Write As #1
Close #1
End If
ERRORHANDLER:
If Err = 70 Then TestOpen = 1
Test_offen = TestOpen
End Function
Sub Master_schliessen()
On Error GoTo Fehler
Err.Clear
Application.CutCopyMode = False
'Application.Wait (Now + TimeValue("0:00:01")) 'unnötig/überflüssig
Workbooks("xyz.xlsm").Close True
'Application.Wait (Now + TimeValue("0:00:01")) 'evtl. sinvoll, damit nicht gleich _
wieder das Öffnen-Makro gestartet werden kann.
Fehler:
If Err.Number  0 Then
MsgBox "Masterdatei ""xyz.xlsm"" ist nicht mehr geöffnet!"
End If
End Sub

Anzeige
AW: Warten bis andere Datei geschlossen
27.02.2015 09:38:42
Werner
Hallo Franz!
Der Tipp war gut!!!
Danke!
Einfach ein tolles Forum hier!
Gruß
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige