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

Datei schon offen

Datei schon offen
01.06.2005 11:46:35
Werner
Hallo zusammen,
Mit diesem Code lasse ich Daten von der Datei "Produktionsübersicht.xls" in die Datei "Datens.xls" durch klick auf dem CommandButton2 schreiben.
Die Datei "Datens.xls" liegt auf dem Netzwerk und es wird von mehreren Usern in die Datei gespeichert. Wenn die Datei aber offen ist, gibt es einen Fehler.
Ist es möglich da noch eine Abfrage reinzubringen, wenn die Datei offen ist. Entweder das Makro dann nicht ausführen, so lange die Datei nicht geschlossen ist oder mit einer MsgBox darauf hinweisen, das der Vorgang noch mal wiederholt werden muß, weil die Datei gerade in bearbeitung ist.

Private Sub CommandButton2_Click()
Dim Abgang
Dim SFT As Range
Dim ZFT As Range
If Abgang = 1 Then
Abgang = MsgBox("Sollen die Daten jetzt gesichtert werden ?", vbOKCancel + vbCritical)
Workbooks.Open Filename:="\\Eise-fs01\vol1\Projekte\Produktionsuebersicht\Übungsdateien\Datens.xls"
Sheets("Datensammler").Activate
Set ZFT = Sheets("Datensammler").[A2]
While ZFT <> ""
Set ZFT = ZFT.Offset(1, 0)
Wend
Windows("Produktionsübersicht.xls").Activate
Sheets("Eingaben").Activate
Range("A5").Select
Set SFT = Sheets("Eingaben").[A5]
While SFT <> ""
For i = 0 To 30
ZFT.Offset(0, i) = SFT.Offset(0, i)
Next
Set SFT = SFT.Offset(1, 0)
Set ZFT = ZFT.Offset(1, 0)
Wend
Windows("Datens.xls").Activate
ActiveWorkbook.Save
ActiveWindow.Close
Sheets("Eingaben").Activate
Range("A4").Select
Set SFT = Sheets("Eingaben").[A5]
While SFT <> ""
For i = 0 To 30
SFT.Offset(0, i) = ""
Next
Set SFT = SFT.Offset(1, 0)
Wend
Sheets("Eingaben").Activate
Range("A4").Select
End If
ActiveWorkbook.Save
ActiveWindow.Close
End Sub

Werner

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei schon offen
01.06.2005 11:49:22
Matthias
Hallo Werner,
Das kannst du einbauen:
Function DateiInBearbeitung(s As String) As Boolean
On Error Resume Next
Open s For Binary Access Read Lock Read As #1
Close #1
If Err.Number <> 0 Then
DateiInBearbeitung = True
Err.Clear
End If
End Function

Gruß Matthias
AW: Datei schon offen
01.06.2005 12:42:11
Werner
Hallo Matthias,
muss ich die Funktion in ein Modul eintragen?
Und an welcher Stelle und Wie rufe ich die Funktion dann auf?
Gruß Werner
AW: Datei schon offen
01.06.2005 13:07:39
Hajo_Zi
Hallo Werner,
der gesamte Code gehört in ein MOdul

Option Explicit
Function DateiInBearbeitung(s As String) As Boolean
On Error Resume Next
Open s For Binary Access Read Lock Read As #1
Close #1
If Err.Number <> 0 Then
DateiInBearbeitung = True
Err.Clear
End If
End Function
Sub Test()
If DateiInBearbeitung("C:\Eigene Dateien\23376.xls") = False Then
Workbooks.Open "C:\Eigene Dateien\23376.xls"
End If
End Sub

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem Windows 2000 SP4 und Excel Version 2000 SP3.


Anzeige
AW: Datei schon offen
01.06.2005 13:39:56
Werner
Hallo Hajo,
Die Datei wird jetzt schreibgeschützt aufgemacht und gefragt ob die Datei ersetzt werden soll.
Die Datei soll aber nicht noch mal geöffnet werden und das Makro soll nicht ausgefürt werden.
Werner
AW: Datei schon offen
01.06.2005 13:45:39
Hajo_Zi
Hallo Werner,
ich habe das Makro getestet und bei mir wurde Sie nicht nochmal aufgemacht.
Oder Geht es bei Dir darum das die DAtei im Netzt schonmal geöffnet Ist?
Wer hat Datei offen http://www.excel-center.de/forum/read.php?f=1&i=68240&t=68145
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Anzeige
AW: Datei schon offen
01.06.2005 14:08:24
Werner
Hallo Hajo,
ja ob im Netz die Datei schon mal offen ist.
mit dem Makro, was Du da geschickt hast kann ich nicht so richtig was anfangen.
Werner
AW: Datei schon offen
01.06.2005 14:29:22
Hajo_Zi
Hallo Werner,
ich habe gerade gesehen das es die fleiche Funktion ist die Du auch hast. Ich habe Sie jetzt im Netz getestet. Hat jemand die Datei schon auf wird Sie nicht geöffnet.
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
AW: Datei schon offen
01.06.2005 15:19:39
WernerB.
Hallo Namensvetter,
kannst Du damit etwas anfangen (muß natürlich noch angepasst werden)?

Sub DateiZustand()
Dim Pfad As String, _
iOpen As Byte
Pfad = "C:\Daten\MappeA.xls"
iOpen = DateiIstFrei(Pfad)
Select Case iOpen
Case 0
MsgBox "Datei " & Pfad & " ist frei !"
Case 1
MsgBox "Datei " & Pfad & " ist geöffnet !"
Case 2
MsgBox "Datei " & Pfad & " wurde nicht gefunden !"
End Select
End Sub


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

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Datei schon offen
01.06.2005 19:06:20
Werner
Hallo WernerB,
da ich die Datei nicht zu hause habe, kann ich sie gerade nicht testen.
Es währe schön, wenn Du morgen Vormittag noch mal reinschenen könntest, da kann ich dan sagen ob ich es hinbekommen habe.
Schon mal danke an Euch für die mühe mir zu helfen.
Werner
AW: Datei schon offen
02.06.2005 10:32:51
Werner
Hallo WernerB,
ich bekomme das Makro nicht richtig eingebaut, kanns Du mir da noch mal helfen?
Werner
AW: Datei schon offen
02.06.2005 12:40:19
WernerB.
Hallo Namensvetter,
in der Annahme, dass Dein bisheriges Makro ansonsten problemlos funktioniert, habe ich es wie folgt modifiziert; testen kann ich es leider nicht.
Die Funktion wird von dem Makro aufgerufen.
- Das Makro gehört in das Modul des entsprechenden Tabellenblattes.
- Die Funktion gehört in ein normales Standard-Modul.

Private Sub CommandButton2_Click()
Dim Abgang
Dim SFT As Range
Dim ZFT As Range
Dim Pfad As String
Dim iOpen As Byte
Pfad = _
"\\Eise-fs01\vol1\Projekte\Produktionsuebersicht\Übungsdateien\Datens.xls"
iOpen = DateiIstFrei(Pfad)
Select Case iOpen
Case 0
'        MsgBox "Datei " & Pfad & " ist frei !"
Case 1
MsgBox "Datei " & Pfad & " ist bereits geöffnet !" _
& vbCr & vbCr & "Makro-Abbruch !", vbCritical, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
Case 2
MsgBox "Datei " & Pfad & " wurde nicht gefunden !" _
& vbCr & vbCr & "Makro-Abbruch !", vbCritical, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End Select
If Abgang = 1 Then
Abgang = MsgBox("Sollen die Daten jetzt gesichtert werden ?", vbOKCancel + vbCritical)
Workbooks.Open Filename:=Pfad
Sheets("Datensammler").Activate
Set ZFT = Sheets("Datensammler").[A2]
While ZFT <> ""
Set ZFT = ZFT.Offset(1, 0)
Wend
Windows("Produktionsübersicht.xls").Activate
Sheets("Eingaben").Activate
Range("A5").Select
Set SFT = Sheets("Eingaben").[A5]
While SFT <> ""
For i = 0 To 30
ZFT.Offset(0, i) = SFT.Offset(0, i)
Next
Set SFT = SFT.Offset(1, 0)
Set ZFT = ZFT.Offset(1, 0)
Wend
Windows("Datens.xls").Activate
ActiveWorkbook.Save
ActiveWindow.Close
Sheets("Eingaben").Activate
Range("A4").Select
Set SFT = Sheets("Eingaben").[A5]
While SFT <> ""
For i = 0 To 30
SFT.Offset(0, i) = ""
Next
Set SFT = SFT.Offset(1, 0)
Wend
Sheets("Eingaben").Activate
Range("A4").Select
End If
ActiveWorkbook.Save
ActiveWindow.Close
End Sub

Function DateiIstFrei(sDateiname As String) As Byte
If Dir(sDateiname) = "" Then
DateiIstFrei = 2
Else
On Error GoTo ERRORHANDLER
Open sDateiname For Random Access Read Lock Read Write As #1
Close #1
End If
ERRORHANDLER:
If Err = 70 Then DateiIstFrei = 1
End Function
Gruß
WernerB.
Anzeige
AW: Datei schon offen
03.06.2005 06:33:10
Werner
Hallo WernerB,
danke das Du noch mal geholfen hast.
Jetzt läuft alles prima.
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige