Pergunta

Eu estou atualizando um programa VBA (Excel). Ao iniciar, o programa verifica se ele pode encontrar um diretório que está no servidor de arquivo do escritório usando:

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

Se isto não for encontrado o programa muda para o modo offline e salva sua saída para o disco rígido local (para transferência posterior), em vez de diretamente para o servidor de arquivos.

Isso funciona OK, ele é muito rápido se o computador pode chegar ao caminho, no entanto, às vezes pode demorar um pouco (até um minuto) para a chamada para FolderExists a completa time-out /, especialmente se houver uma conexão de rede aberto, mas o caminho necessário não existe (ou seja, estamos conectados a algum outro LAN).

Minha pergunta (s):

  1. há uma melhor maneira mais rápida / para verificar a existência de um caminho de rede usando VBA?

  2. Existe uma maneira de ter o usuário cancelar a pesquisa feita por FolderExists () quando ele (a) sabe que não pode ter êxito, porque eles não estão no escritório. Ou seja, Existe alguma maneira de FolderExists saída prematuramente () (ou qualquer outra chamada de função para que o assunto)

Eu quero a solução para ter o mínimo de entrada do usuário quanto possível, razão pela qual o cheque é feito automaticamente, em vez de apenas perguntando ao usuário se ele (a) está no escritório ou não em primeiro lugar.

Foi útil?

Solução

Se você estiver em um domínio:

Verifique a variável ambiental LOGONSERVER.

Se houver dois '\' símbolos antes do nome do servidor, que é ligado ao diretório ativo e por isso você deve fazer o seu cheque.

Caso contrário, não é conectado à rede do escritório, assim você pode ignorar a verificação.

Se você não estiver em um domínio:

Provavelmente a sua melhor aposta é a de executar um ping contra o servidor de destino.

Se não for possível obter uma resposta de ping, ou ele não está conectado à rede, não está conectado à sua rede, ou o servidor está em baixo. Você não quer que seu código seja executado de qualquer forma, nesses casos.

MVPS.ORG e MSDN ambos têm algum código amostras para que,

Outras dicas

Eu uso o Dir comando, visando uma pasta compartilhada no servidor e prendendo o erro quando não encontrado.

Dir("\\Servername\aFolder\", vbDirectory)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top