Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Erreichbarkeit Netzwerkdatei prüfen

Betrifft: Erreichbarkeit Netzwerkdatei prüfen von: Henner
Geschrieben am: 24.11.2015 18:09:10

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

  

Betrifft: AW: Erreichbarkeit Netzwerkdatei prüfen von: Hajo_Zi
Geschrieben am: 24.11.2015 19:18:00

ich habe hier jetzt kein Netzwerk. Ich benutze dir immer mit Schalter,.
If Dir(ThisWorkbook.Path & "\*.xls", vbNormal) = "" Then


GrußformelHomepage


  

Betrifft: AW: Erreichbarkeit Netzwerkdatei prüfen von: Henner
Geschrieben am: 25.11.2015 06:49:22

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



  

Betrifft: AW: Erreichbarkeit Netzwerkdatei prüfen von: Michael
Geschrieben am: 25.11.2015 21:01:24

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


  

Betrifft: AW: Erreichbarkeit Netzwerkdatei prüfen von: Henner
Geschrieben am: 26.11.2015 21:33:37

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


  

Betrifft: AW: Erreichbarkeit Netzwerkdatei prüfen von: Michael
Geschrieben am: 27.11.2015 13:00:48

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


  

Betrifft: AW: Erreichbarkeit Netzwerkdatei prüfen von: Jürgen V.
Geschrieben am: 26.11.2015 09:30:46

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


  

Betrifft: AW: Erreichbarkeit Netzwerkdatei prüfen von: Henner
Geschrieben am: 26.11.2015 21:31:16

Hallo Jürgen,

vielen Dank für Deinen Vorschlag. Ich werde das so testen, bisher sieht es gut aus.


Nochmals besten Dank & Gruss, Henner


 

Beiträge aus den Excel-Beispielen zum Thema "Erreichbarkeit Netzwerkdatei prüfen"