O código dá erro ao tentar reconhecer se é pasta ou arquivo, se eu comentar essa seção, o código me retorna o nome da pasta que era para ele estar lendo
O código dá erro ao tentar reconhecer se é pasta ou arquivo, se eu comentar essa seção, o código me retorna o nome da pasta que era para ele estar lendo
Oii, Christopher! Tudo bem?
Agradeço por aguardar o nosso retorno.
Para poder te ajudar, poderia, por gentileza, fornecer mais detalhes? Por exemplo, descreva a mensagem de erro que está recebendo, disponibilize o código que está usando. Um print da sua tela no momento do erro também ajudará.
Dessa forma consigo ter a mesma visibilidade que você para encontrar uma solução. Deixo aqui, um guia de como fazer uma pergunta completa no fórum para te auxiliar.
Fico à disposição, até mais!
Option Explicit
Sub LerArquivosDaPasta()
Dim endereco, arquivo As String
Dim DestLinha As Integer
Dim aleatorio As String
DestLinha = 3
endereco = Range("B1") & "\"
arquivo = Dir(endereco, vbDirectory)
Do While arquivo <> vbNullString
If arquivo <> "." And arquivo <> ".." Then
Range("B" & DestLinha) = arquivo
' Verifica se o item é uma pasta
If (GetAttr(arquivo) And vbDirectory) = vbDirectory Then
Range("C" & DestLinha) = "Pasta"
Else
Range("C" & DestLinha) = "Arquivo"
End If
DestLinha = DestLinha + 1
arquivo = Dir()
Else
arquivo = Dir()
End If
Loop
End Sub
OBSERVAÇÃO: Se eu comentar todo o bloco "IF" do "GetAttr" não gera erro e devolve os nomes dos arquivos e pastas
Oii, Christopher!
Obrigada pelo retorno.
Sobre o erro '53 - O arquivo não foi localizado', ele ocorre porque a função GetAttr está tentando acessar um arquivo ou pasta sem o caminho completo.
Como sugestão, tente concatenar o caminho base (armazenado na variável endereco
) com o nome do arquivo antes de usar a função GetAttr
. Segue uma sugestão:
Option Explicit
Sub LerArquivosDaPasta()
Dim endereco, arquivo As String
Dim DestLinha As Integer
Dim caminhoCompleto As String
DestLinha = 3
endereco = Range("B1") & ""
arquivo = Dir(endereco, vbDirectory)
Do While arquivo <> vbNullString
If arquivo <> "." And arquivo <> ".." Then
caminhoCompleto = endereco & arquivo
Range("B" & DestLinha) = arquivo
' Verifica se o item é uma pasta
If (GetAttr(caminhoCompleto) And vbDirectory) = vbDirectory Then
Range("C" & DestLinha) = "Pasta"
Else
Range("C" & DestLinha) = "Arquivo"
End If
DestLinha = DestLinha + 1
End If
arquivo = Dir()
A modificação foi adicionar a variável caminhoCompleto
para armazenar o caminho completo do arquivo/pasta
.
Concatenação do endereco
com o arquivo antes de passar para o GetAttr
.
Faça o teste e observe se funciona como esperado.
Até mais!