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

Erreichbarkeit Netzwerkdatei prüfen

Erreichbarkeit Netzwerkdatei prüfen
24.11.2015 18:09:10
Henner

Guten Abend zusammen,
ich möchte gerne überprüfen ob eine Datei auf dem Netzwerk erreichbar ist und habe dafür folgenden Ansatz gefunden:


Sub DateiCheck()
Dim lstrPfad As String, lShell
lstrPfad = Dir("R:\versuch\test\test.txt")
If lstrPfad = "" Then
MsgBox "Nicht erreichbar"
Else
MsgBox "Erreichbar"
End If
End Sub
Problem 1: Selbst wenn ich das Netzwerkkabel ziehe, ist die Datei noch für ca. 10 Sekunden "Erreichbar". Die Abfrage sollte jedoch live sein.
Problem 2: Ist die Datei nicht erreichbar, hängt Excel sich auf und bringt nach einiger Zeit Laufzeitfehler 52: Dateiname oder -nummer falsch
Für Eure Hilfe vorab vielen Dank! Gruss Henner

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erreichbarkeit Netzwerkdatei prüfen
24.11.2015 19:18:00
Hajo_Zi
ich habe hier jetzt kein Netzwerk. Ich benutze dir immer mit Schalter,.
If Dir(ThisWorkbook.Path & "\*.xls", vbNormal) = "" Then

AW: Erreichbarkeit Netzwerkdatei prüfen
25.11.2015 06:49:22
Henner
Hallo Hajo,
danke für Deinen Hinweis. Für mich wäre noch interessant zu wissen warum Du das so machst. Deinen Vorschlag habe ich - hoffentlich richtig - eingebaut. Leider treten immer noch beide Probleme auf.

Sub DateiCheck()
If Dir("R:\versuch\test\test.txt", vbNormal) = "" Then
MsgBox "Nicht erreichbar"
Else
MsgBox "Erreichbar"
End If
End Sub

Anzeige
AW: Erreichbarkeit Netzwerkdatei prüfen
25.11.2015 21:01:24
Michael
Hi zusammen,
ich habe auch kein Netz, aber man kennt das ja, daß der Rechner manchmal "ewig" braucht, um z.B. festzustellen, daß *keine* CD eingelegt ist.
Meines Erachtens (kann mich aber auch täuschen) hat man programmiertechnisch keine Möglichkeit, solche Latenzzeiten zu vermeiden.
Trotzdem mal ein Test, vielleicht hilft es weiter (bitte LW-Buchstaben ersetzen):
Option Explicit
Function LANok(s As String, mode As Long) As String
Dim t1 As Double, t2 As Double
Dim ergebnis As String
t1 = Timer
On Error GoTo ErrExit
If mode = 0 Then ChDrive s
If mode = 1 Then ChDir s
If mode = 2 Then ergebnis = Dir(s, vbNormal) & vbLf
ErrExit:
With Err
If .Number <> 0 Then
ergebnis = ergebnis & " Err: " & .Number & ": " & .Description
.Clear
Else: ergebnis = ergebnis & " Err: 0 "
End If
End With
t2 = Timer
LANok = "t= " & (t2 - t1) * 1000 & " Ergebnis= " & ergebnis
End Function
Sub aufrufen()
Dim ausgabe As String
ausgabe = LANok("D", 0)
ausgabe = ausgabe & vbLf & LANok("D:\test\", 1)
ausgabe = ausgabe & vbLf & LANok("D:\versuch\test\test.txt", 2)
MsgBox ausgabe
End Sub
Schöne Grüße,
Michael

Anzeige
AW: Erreichbarkeit Netzwerkdatei prüfen
26.11.2015 21:33:37
Henner
Hallo Michael,
vielen Dank für Deinen Vorschlag. Mit Deinem Code muss ich mich erst beschäftigen, sieht auf den ersten Blick interessant aus.
Nochmals besten Dank & Gruss, Henner

AW: Erreichbarkeit Netzwerkdatei prüfen
27.11.2015 13:00:48
Michael
Hi zusammen,
eine Variante ist mir noch durch den Kopf gegangen: die Wartezeit des ursprünglichen Dir-Befehls ist ja das Lästige, wenn die Datei nicht vorhanden bzw. die Netzwerkverbindung weg ist.
VBAs "Shell" arbeitet asynchron, d.h. ein Befehl wird "angestupst", die Shell kehrt aber "sofort" zum aufrufenden Skript zurück. Daher könnte es auch ein Ansatz sein, den "DIR" von der Kommandozeile in einer Batch-Datei zu verwenden, zusammen mit einer Textdatei.
Batch-Datei, z.B. dirtest.bat:
del dir_r.txt
dir r:\blabla\bla >dir_r.txt

Die rufst Du dann via Shell auf, und hinterher (meinetwegen nach einem sleep von ein paar ms) kannst Du schauen, ob die Textdatei da ist.
Die Textdatei enthält auf alle Fälle die Ausgabe des dir: entweder "Datei nicht gefunden" oder eben den Pfad; das "Datei nicht gefunden" sollte aber einige Zeit länger dauern, so daß es womöglich überflüssig ist, die Textdatei auszulesen.
Schöne Grüße,
Michael

Anzeige
AW: Erreichbarkeit Netzwerkdatei prüfen
26.11.2015 09:30:46
Jürgen V.
Hallo Henner,
für das Problem 2 hilft Dir das FileSystemObject weiter:
Sub DateiCheck()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.fileexists("R:\versuch\test\test.txt") Then
MsgBox "Erreichbar"
Else
MsgBox "Nicht erreichbar"
End If
End Sub
Ob damit auch Problem 1 gelöst ist wäre zu testen.
Gruß, Jürgen

AW: Erreichbarkeit Netzwerkdatei prüfen
26.11.2015 21:31:16
Henner
Hallo Jürgen,
vielen Dank für Deinen Vorschlag. Ich werde das so testen, bisher sieht es gut aus.
Nochmals besten Dank & Gruss, Henner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige