Domanda

Sto aggiornando un programma VBA (Excel). All'avvio il programma verifica se riesce a trovare una directory che si trova sul file server dell'ufficio usando:

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

Se questo non viene trovato, il programma passa alla modalità offline e salva il suo output sul disco rigido locale (per il trasferimento successivo), anziché direttamente sul file server.

Funziona bene, è molto veloce se il computer può raggiungere il percorso, tuttavia a volte può richiedere del tempo (fino a un minuto) per il completamento / timeout della chiamata a FolderExists, soprattutto se è presente una connessione di rete aperto ma il percorso richiesto non esiste (ovvero siamo connessi a qualche altra LAN).

Le mie domande:

  1. esiste un modo più rapido / migliore per verificare l'esistenza di un percorso di rete utilizzando VBA?

  2. c'è un modo per fare in modo che l'utente annulli la ricerca fatta da FolderExists () quando (s) sa che non può avere successo perché non sono in ufficio. Cioè c'è un modo per uscire prematuramente da FolderExists () (o da qualsiasi altra funzione chiamata in tal senso)

Voglio che la soluzione abbia il minor input possibile da parte dell'utente, motivo per cui il controllo viene eseguito automaticamente, piuttosto che chiedere semplicemente all'utente se si trova in ufficio o meno.

È stato utile?

Soluzione

Se sei su un dominio:

Controlla la variabile ambientale LOGONSERVER.

Se ci sono due simboli '\' prima del nome del server, è collegato alla directory attiva e quindi dovresti fare il tuo controllo.

Altrimenti, non è connesso alla rete dell'ufficio, quindi puoi ignorare il controllo.

Se non sei su un dominio:

Probabilmente la soluzione migliore è eseguire un ping contro il server di destinazione.

Se non riesce a ottenere una risposta ping, o non è connesso alla rete, non è collegato alla TUA rete o il server è inattivo. Non vuoi che il tuo codice venga eseguito in entrambi i modi, in questi casi.

MVPS.ORG e I forum MSDN hanno entrambi un codice campioni per questo,

Altri suggerimenti

Uso il comando Dir , indirizzando una cartella condivisa sul server e intrappolando l'errore quando non trovato.

Dir("\\Servername\aFolder\", vbDirectory)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top