Mais uma função muito difundida na maior parte das linguagens de programação, mas carece de uma representante no VBA.
Existem duas alternaticas possíveis para efetuar a tarefa:
Usando as funções padrão do VBA como no exemplo abaixo onde existe a tentativa de abrir um arquivo com a funçao Open, causando um erro caso o arquivo não existir
1 2 3 4 5 6 7 8 9 | Function TestaExistenciaArquivo(filename) Dim f 'captura qualquer erro que ocorrer On Error Resume Next f = FreeFile Open filename For Input As #f Close #f TestaExistenciaArquivo = Not (Err <> 0) End Function |
Confesso que não sou muito adepto deste tipo de abordagem. Apesar da exisitência de um mecanismo de controle de erros, forçar sua utilização geralmente implica na criação de um contexto não muito adequado para programar, além dos desvios necessários para esse tipo tratamento.
A segunda alternativa é usar a biblioteca Microsoft Scripting Runtime e o objeto FileSystemObject e suas funções. O mesmo já possui uma função chamada FileExists (nada mais claro não?) que retorna True se o arquivo existir e False do contrário:
1 2 3 4 5 6 | Function TestaExistenciaArquivo(ByVal caminhoArquivo As String) Dim retorno As Boolean Set FSO = New FileSystemObject retorno = FSO.FileExists(caminhoArquivo) TestaExistenciaArquivo = retorno End Function |
O código é bem explicativo, até porque o nome das funções refletem exatamente sua ação.
Para testar as duas funções, basta criar uma macros que as chamem ou colocar a função em uma célula, por exemplo:
=TestaExistenciaArquivo(“C:\temp\arquivo.txt”)
Bom proveito!
Abraços
Tomás Vásquez
www.tomasvasquez.com.br