Pregunta

Estoy actualizando un programa VBA (excel). Al inicio, el programa verifica si puede encontrar un directorio que se encuentre en el servidor de archivos de Office utilizando:

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

Si no se encuentra, el programa cambia al modo fuera de línea y guarda su salida en el disco duro local (para su posterior transferencia), en lugar de hacerlo directamente en el servidor de archivos.

Esto funciona bien, es muy rápido si la computadora puede alcanzar la ruta, sin embargo, a veces puede tomar un tiempo (hasta un minuto) para que la llamada a FolderExists se complete / se agote el tiempo de espera, especialmente si hay una conexión de red abierto pero la ruta requerida no existe (es decir, estamos conectados a otra LAN).

Mi (s) pregunta (s):

  1. ¿hay una manera mejor / más rápida de verificar la existencia de una ruta de red utilizando VBA?

  2. hay una forma de que el usuario cancele la búsqueda realizada por FolderExists () cuando (s) sabe que no puede tener éxito porque no están en la oficina. Es decir. ¿hay alguna manera de salir prematuramente de FolderExists () (o cualquier otra función que se llame)?

Quiero que la solución tenga la menor cantidad de comentarios del usuario, por lo que la comprobación se realiza automáticamente, en lugar de solo preguntar al usuario si está en la oficina o no en primer lugar.

¿Fue útil?

Solución

Si estás en un dominio:

Compruebe la variable de entorno LOGONSERVER.

Si hay dos '' símbolos antes del nombre del servidor, está conectado al directorio activo y, por lo tanto, debe hacer su comprobación.

De lo contrario, no está conectado a la red de la oficina, por lo que puede omitir la verificación.

Si no estás en un dominio:

Probablemente su mejor apuesta sea ejecutar un ping contra el servidor de destino.

Si no puede obtener una respuesta de ping, no está conectado a la red, no está conectado a SU red o el servidor está inactivo. No quieres que tu código se ejecute de ninguna manera, en esos casos.

MVPS.ORG y MSDN Forums ambos tienen algún código muestras para eso,

Otros consejos

Uso el comando Dir , que apunta a una carpeta compartida en el servidor y atrapa el error cuando no se encuentra.

Dir("\\Servername\aFolder\", vbDirectory)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top