Função para verific...
 
Notifications
Clear all

Função para verificar existência de pasta

13 Posts
4 Usuários
0 Reactions
2,164 Visualizações
carlosrgs
(@carlosrgs)
Posts: 631
Prominent Member
Topic starter
 

Boa tarde pessoal.

Essa função verifica se um arquivo existe, e retorna Verdadeiro ou Falso

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

Tem como adaptar para fazer o mesmo mas com uma pasta?

Tenho algumas macros que verificam se a pasta/caminho existe, mas queria algo com função.

Valeu!

_______________________________________________________________________________________________
Carlos Santos
* Marque o tópico como Resolvido se foi solucionado seu problema.

 
Postado : 27/07/2018 12:02 pm
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Boa tarde.
Seria +- isso que precisa?
Nota:
O parâmetro caminho pode ser uma célula que contém um endereço de pasta ( endereço completo tipo c:Meus documentosMeu arquivo)

Public Function Verificadiretorio(ByVal caminho As String) As Boolean
    
    Dim arq As Variant
    
    arq = VBA.Dir(caminho, vbDirectory)
    
    
        If arq <> "" Then
            Verificadiretorio = True
        Else
            Verificadiretorio = False
        End If


End Function

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 27/07/2018 1:15 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa tarde, Carlos!

Dá pra usar assim:

Function PastaExiste(caminho As String) As Boolean
  PastaExiste = CreateObject("scripting.filesystemobject").FolderExists(caminho)
End Function

Exemplo de uso na célula:

=PastaExiste("C:UsersUsuarioDownloads")

Retorna VERDADEIRO

Modificando só um pouco, vc tb. pode usar uma quase idêntica para verificar se um arquivo existe (é só mudar FolderExists por FileExists):

Function ArquivoExiste(CaminhoENomeArq As String) As Boolean
  ArquivoExiste = CreateObject("scripting.filesystemobject").FileExists(CaminhoENomeArq)
End Function

Exemplo de uso:

=ArquivoExiste("C:UsersUsuarioDownloadsteste.txt")

Retorna VERDADEIRO

 
Postado : 27/07/2018 1:16 pm
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Já responderam mas vou postar minha contribuição:

Public Function Pasta_Existe(Caminho As Variant) As Boolean
If Dir(Caminho) = "" Then
Pasta_Existe = False
Else
Pasta_Existe = True
End If
End Function

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 27/07/2018 1:39 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Aproveitando as ótimas ideias do wzxnet7 e do André e condensando um pouco...

Function PastaExiste(caminho As String) As Boolean
  PastaExiste = Dir(caminho, vbDirectory) <> ""
End Function

 
Postado : 27/07/2018 1:54 pm
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Simples e direito.
Excelente implementação Edson.

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 27/07/2018 2:07 pm
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Sei que não faz muita diferença mas, pode ser útil em algum momento.

Ao declarar a variável "Caminho" como Variant. O excel distingue quando a célula com o caminho da pasta for = Vazio retornando erro.

Declarando como String, mesmo a célula estando vazia, continua retornando VERDADEIRO.

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 27/07/2018 2:12 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Sei que não faz muita diferença mas...

Tem razão, André. E acho que faz muita diferença.

No entanto, prefiro manter a variável como String por coerência ao tipo de conteúdo que ela espera e acrescentar apenas mais uma condição no teste lógico:

Function PastaExiste(caminho As String) As Boolean
  PastaExiste = (caminho <> "") And (Dir(caminho, vbDirectory) <> "")
End Function

 
Postado : 27/07/2018 3:17 pm
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Boa Saída!

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 27/07/2018 3:21 pm
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Colegas, reparem outra coisa....

Se a pasta procurada existir, mas estiver vazia, ele também retorna FALSO.

Procede?

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 27/07/2018 3:34 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Não, André, não deve retornar. Pelo menos criei uma pasta zerada aqui e testei deu Verdadeiro.

 
Postado : 27/07/2018 5:02 pm
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Eu também criei uma pasta nova (vazia) e retornou verdadeiro.

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 28/07/2018 10:35 am
carlosrgs
(@carlosrgs)
Posts: 631
Prominent Member
Topic starter
 

Bom dia pessoal

Obrigado pelo retorno de todos.

Aqui também retornou falso para a pasta vazia, mas ta valendo.
Se está vazia a macro que estou editando não funcionará mesmo

_______________________________________________________________________________________________
Carlos Santos
* Marque o tópico como Resolvido se foi solucionado seu problema.

 
Postado : 30/07/2018 5:33 am