Question

Je mets à jour un programme VBA (excel). Au démarrage, le programme vérifie s’il peut trouver un répertoire situé sur le serveur de fichiers Office à l’aide des éléments suivants:

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

S'il ne le trouve pas, le programme passe en mode hors connexion et enregistre sa sortie sur le disque dur local (pour un transfert ultérieur), au lieu de directement sur le serveur de fichiers.

Cela fonctionne bien. C’est très rapide si l’ordinateur peut atteindre le chemin. Toutefois, l’appel à FolderExists peut prendre un certain temps (jusqu’à une minute), surtout s’il existe une connexion réseau. ouvert mais le chemin requis n’existe pas (c’est-à-dire que nous sommes connectés à un autre réseau local).

Ma question (s):

  1. existe-t-il un moyen plus rapide / meilleur de vérifier l'existence d'un chemin réseau utilisant VBA?

  2. existe-t-il un moyen de demander à l'utilisateur d'annuler la recherche effectuée par FolderExists () lorsqu'il sait qu'il ne pourra pas réussir, car ils ne sont pas au bureau. C'est à dire. existe-t-il un moyen de quitter prématurément FolderExists () (ou tout autre appel de fonction d'ailleurs)

Je souhaite que la solution ait le moins de saisie possible de l'utilisateur. C'est pourquoi la vérification est effectuée automatiquement, au lieu de simplement demander à l'utilisateur s'il est au bureau ou non.

Était-ce utile?

La solution

Si vous êtes sur un domaine:

Vérifiez la variable d'environnement LOGONSERVER.

S'il y a deux symboles '\' avant le nom du serveur, celui-ci est connecté à Active Directory et vous devez donc vérifier.

Sinon, il n'est pas connecté au réseau du bureau, vous pouvez donc contourner le contrôle.

Si vous n'êtes pas sur un domaine:

La meilleure solution consiste probablement à exécuter un ping sur le serveur cible.

S'il ne peut pas obtenir de réponse ping, il n'est pas connecté au réseau, n'est pas connecté à VOTRE réseau ou le serveur est en panne. Dans ces cas, vous ne voulez pas que votre code soit exécuté de toute façon.

MVPS.ORG et Les forums MSDN ont tous deux du code des échantillons pour cela,

Autres conseils

J'utilise la commande Dir pour cibler un dossier partagé sur le serveur et intercepter l'erreur lorsqu'elle est introuvable.

Dir("\\Servername\aFolder\", vbDirectory)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top