Ir ao conteúdo
  • Cadastre-se

VBA: Listar arquivos


Tommy.Vercetti

Posts recomendados

Olá à todos!

Estou tentando descobrir como listar as propriedades "nome" e "tamanho" de arquivos de um determinado diretório.

O máximo que eu consegui foi o seguinte:

Sub ShowFileList()

Dim fs, f, f1, fc, s

Set fs = CreateObject("Scripting.FileSystemObject")

Set f = fs.GetFolder("C:\Temp")

Set fc = f.Files

For Each f1 In fc

s = s & f1.Name & ":"

s = s & vbCrLf

s = s & f1.Size & " bytes"

s = s & vbCrLf

Next

MsgBox s

End Sub

Os arquivos são exibidos com nome e tamanho, só que em uma MsgBox.

Eu queria ter a possibilidade de copiar estes dados para uma planilha.

Se alguém puder ajudar, agradeço!

=D obrigado!

Link para o comentário
Compartilhar em outros sites

Substitua o 'MsgBox s' por 'document.writeln s' ou.

O meu ficou assim..

Private sub ShowFileList()

Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder("C:\Diogo")
Set fc = f.Files
For Each f1 In fc
s = f1.Name & " :"  & f1.Size\1024 & " kbytes"& "
"
document.write s
Next
End sub

Eu usei quebra de linha Html porque testei no browser.. mas se for o caso, é só retornar pro VbcrLf

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Os arquivos são exibidos com nome e tamanho, só que em uma MsgBox.

Eu queria ter a possibilidade de copiar estes dados para uma planilha.

Em VBA do Excel

1) Abra o editor do VB (tecle ALT F11)

2) Na janela "Projeto", dê um clique duplo em "Plan1"

3) Copie e cole o código abaixo:

Private Sub Worksheet_Activate()
    Dim Caminho As String
    Caminho = InputBox("Informe a pasta:", "Pasta", "C:\")
    ListarArquivos Caminho, Me.Name
End Sub

Private Sub ListarArquivos(Caminho As String, Planilha As String)

    Dim FSO As Object, Pasta As Object, Arquivo As Object, Arquivos As Object
    Dim Linha As Long
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    If Not FSO.FolderExists(Caminho) Then
        MsgBox "A pasta '" & Caminho & "' não existe.", vbCritical, "Erro"
        Exit Sub
    End If
    
    Set Pasta = FSO.GetFolder(Caminho)
    Set Arquivos = Pasta.Files
    
    For Each Arquivo In Arquivos
        
        Linha = Linha + 1
        
        Me.Cells(Linha, 1) = UCase$(Arquivo.Path)
        Me.Cells(Linha, 2) = Format$((Arquivo.Size / 1024), "#,##0") & " KB"
        
    Next

End Sub

:joia:

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...