Verificando a existência de um arquivo no VBA

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

Comentários

comentários