Frage

Ich bin Aktualisieren einer VBA-Programm (Excel). Beim Start überprüft das Programm, ob es ein Verzeichnis finden kann, die auf dem Office-Datei-Server ist mit:

FileSystemObject.FolderExists("\\servername\path")

Wenn dies nicht das Programm wechselt in den Offline-Modus zu finden ist und speichert seine Ausgabe an die lokale Festplatte (für eine spätere Übertragung), statt direkt mit dem File-Server.

Dies funktioniert OK, es ist sehr schnell, wenn der Computer den Pfad erreichen kann, jedoch kann es manchmal eine Weile dauern (bis zu einer Minute) für den Anruf zu FolderExists / Time-out zu vervollständigen, vor allem, wenn es eine Netzwerkverbindung offen, aber der erforderliche Pfad nicht existiert (dh wir zu einem anderen LAN verbunden sind).

Meine Frage (n):

  1. gibt es eine schnellere / bessere Möglichkeit für die Existenz eines Netzwerkpfades zu überprüfen VBA?

  2. ist es eine Möglichkeit, die Benutzer haben die Suche nach FolderExists (), wenn (s) getan Abbrechen er weiß es nicht gelingen kann, weil sie nicht im Büro ist. D. h ist es eine Möglichkeit, vorzeitig zu beenden FolderExists () (oder jeden anderen Funktionsaufruf für diese Angelegenheit)

Ich mag die Lösung so wenige Benutzereingaben wie möglich hat, weshalb die Überprüfung automatisch durchgeführt wird, und nicht nur den Benutzer zu fragen, ob er (sie) ist im Büro oder nicht in erster Linie.

War es hilfreich?

Lösung

Wenn Sie auf einer Domäne sind:

die Logonserver Umgebungsvariable überprüfen.

Wenn es zwei ‚\‘ Symbole vor dem Servernamen, um es zu Active Directory verbunden ist und so sollten Sie Ihren Scheck tun.

Ansonsten wird es nicht in das Büronetzwerk angemeldet, so können Sie den Check umgehen.

Wenn Sie nicht in einer Domäne sind:

Wahrscheinlich die beste Wahl ist ein Ping an den Zielserver ausgeführt werden.

Wenn es nicht eine Ping-Antwort bekommen, es entweder nicht mit dem Netzwerk verbunden ist, ist nicht mit dem Netzwerk verbunden, oder der Server ausgefallen ist. Sie wollen nicht, Ihren Code so oder so, in den Fällen laufen.

MVPS.ORG und MSDN Foren haben beide einen Code Proben für das,

Andere Tipps

Ich verwende den Dir Befehl, einen freigegebenen Ordner auf dem Server-Targeting und Abfangen des Fehlers, wenn sie nicht gefunden.

Dir("\\Servername\aFolder\", vbDirectory)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top