Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1200to1204
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

Fehlermeldung bei bereits geöffneter Datei

Fehlermeldung bei bereits geöffneter Datei
pbaer007
Hallo VBA-Gemeinde,
In einem Makro soll der Benutzer einen bestimmten File auswählen, in den dann Daten geschrieben werden. Funktioniert insoweit alles sehr schön.
NUR wenn die "Ziel-Datei" bereits geöffnet ist, bekomme ich dann eine Fehlermeldung
"[Datei] ist bereits geöffnet. Wenn sie die Datei erneut öffnen....."
Wählt der Anwender , "stürtzt" das Makro ab.
Ich habe versucht im Netzt etwas zu finden, jedoch hab ich die Lösungsansätze nicht richtig umstricken können.
Kann mir jemand einen Tip geben?
Nachfolgend der Auszug aus dem Export-Makro:

varMsgBox = MsgBox("Please select the File_NAME", _
vbOKOnly + vbQuestion, "Selection of actual File")
Path = Application.GetOpenFilename
If Path = False Then
varMsgBox = MsgBox("User Cancelled!", vbOKOnly + vbCritical, "End of Procedure")
Exit Sub
End If
Workbooks.Open Filename:=Path
varFile2 = ActiveWorkbook.Name

Vielen Dank
Gert

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Fehlermeldung bei bereits geöffneter Datei
17.02.2011 10:32:11
Holger,
Hallo Gert,
was soll denn passieren, wenn der User ein bereits geöffnetes File öffnen möchte?
Du könntest ja vorher prüfen ob das File bereits im Zugriff ist und wenn ja abbrechen.
AW: Fehlermeldung bei bereits geöffneter Datei
17.02.2011 10:53:02
pbaer007
Hallo Holger,
Entschuldigung, das wichtigste hab ich vergessen.
Ja, wenn Excel feststellt, dass die Datei bereits geöffnet ist, dann soll das Makro abrechen.
evtl., wenn nicht zu aufwendig eine Infobox "Datei schon offen, erst schließen, dann neu starten"
und dann
"exit sub"
Vielen Dank
Gert
AW: Fehlermeldung bei bereits geöffneter Datei
17.02.2011 10:58:30
fcs
Hallo Gert,
vor dem Öffnen der ausgewählten Datei muss dann eprüft werden, ob eine Datei mit gleichem Namen bereits geöffnet ist.
Gruß
Franz
Function fncCheckWorkbook(strWorkbookName As String) As Boolean
'Prüft, ob Arbeitsmappe schon geöffnet
Dim wb As Workbook
For Each wb In Workbooks
If LCase(wb.Name) = LCase(strWorkbookName) Then
fncCheckWorkbook = True
Exit For
End If
Next
End Function
Function fncExtractFilename(strName As String) As String
'Trennt das Verzeichnis vom Dateinamen (ab Excel 2000)
If InStr(1, strName, Application.PathSeparator) = 0 Then
fncExtractFilename = strName
Else
fncExtractFilename = Mid(String:=strName, _
Start:=InStrRev(strName, Application.PathSeparator) + 1)
End If
End Function
Sub aatest()
varMsgBox = MsgBox("Please select the File_NAME", _
vbOKOnly + vbQuestion, "Selection of actual File")
Path = Application.GetOpenFilename
If Path = False Then
varMsgBox = MsgBox("User Cancelled!", vbOKOnly + vbCritical, "End of Procedure")
Exit Sub
End If
varfile2 = fncExtractFilename(strName:=Path)
If fncCheckWorkbook(strWorkbookName:=varfile2) = True Then
With Workbooks(varfile2)
If LCase(Path)  LCase(.FullName) Then
'Verzeichnis der geöffneten und der ausgewählten Datei stimmen nicht überein
.Close savechanges:=True
Workbooks.Open Filename:=Path
Else
.Activate
End If
End With
Else
Workbooks.Open Filename:=Path
End If
varfile2 = ActiveWorkbook.Name
End Sub

Anzeige
AW: zum Lösungsansatz
17.02.2011 11:12:52
pbaer007
Hallo Franz,
vielen Dank schon einmal.
Werde das ausprobieren und mich noch einmal melden.
Gert
AW: Nachtrag
17.02.2011 11:16:21
fcs
Hallo Gert,
hier noch ein kleiner Nachtrag, der prüft, ob die Datei schreibgeschützt geöffnet wurde, weil ein ander User die Datei geöffnet hat.
Gruß
Franz
Sub aatest()
varMsgBox = MsgBox("Please select the File_NAME", _
vbOKOnly + vbQuestion, "Selection of actual File")
Path = Application.GetOpenFilename
If Path = False Then
varMsgBox = MsgBox("User Cancelled!", vbOKOnly + vbCritical, "End of Procedure")
Exit Sub
End If
varfile2 = fncExtractFilename(strName:=Path)
Application.DisplayAlerts = False
If fncCheckWorkbook(strWorkbookName:=varfile2) = True Then
With Workbooks(varfile2)
If LCase(Path)  LCase(.FullName) Then
'Verzeichnis der geöffneten und der ausgewählten Daei stimmen nicht überein
.Close savechanges:=True
Workbooks.Open Filename:=Path
Else
.Activate
End If
End With
Else
Workbooks.Open Filename:=Path
End If
If ActiveWorkbook.ReadOnly = True Then
MsgBox "The selected file was openend by an other user. Please try later!", _
vbInformation + vbOKOnly, "End of Procedure"
ActiveWorkbook.Close savechanges:=False
Application.DisplayAlerts = True
Exit Sub
End If
Application.DisplayAlerts = True
varfile2 = ActiveWorkbook.Name
End Sub

Anzeige
AW: Nachtrag >>> Problem gelöst
17.02.2011 15:35:36
pbaer007
Hallo Franz,
bin zwar noch nicht ganz fertig mit den Feinarbeiten, aber bis jetzt funktioniert deine Lösung.
SUPER, vielen Dank.
Gert
File Spezialisten hierher:
17.02.2011 10:59:19
Holger,
Hallo Gert,
und da du natürlich nicht weißt, welche Datei der user auswählt, wird es etwas kompliziert.
Ich setze die Frage auf offen, da ich auf die Schnelle keine Lösung habe.
Es geht mit Sicherheit mit FileObject, aber wie müßte ich daheim in meinem Buch nachschauen.
Mir wäre nur eingefallen mit
For each wb in Wokbooks
if wb = path
next wb
zu prüfen, aber das geht ja nur, wenn die Datei derselbe User geöffnet hat.
Anzeige
AW: File Spezialisten hierher:
17.02.2011 11:15:52
pbaer007
Hallo Holger,
zu 99% hat der selbe User die Datei offen.
Demnach könnte dann die kleine Lösung reichen.
Bau ich die einfach vor der Zeile
" Workbooks.Open Filename:=Path "
ein?
Gert
Ich mache es so:
17.02.2011 12:23:21
Holger,
Hallo Gert,
vor dem Workbooks Open Befehl würde ich prüfen,. ob der User diese Datei schon offen hat mit:
For each wb in Workbooks
if wb.name= Path.Name (ACHTUNG: hier musst du natürlich den eigentlichen Filenamen  _
herausfinden) then
msg box" Datei schon geöffnet", vbcritical
exit sub
end if
next wb

AW: Ich mache es so:
17.02.2011 15:31:46
pbaer007
Hallo Holger,
vielen Dank für die Unterstützung.
Ich habe jetzt doch den etwas komplexeren Weg von Franz verwendet.
Du kannst die Frage somit als "erledigt" ansehen.
Viele Grüße
Gert
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge