VBA GetFolder & GetFile (Obter Propriedades de Arquivos e Pastas)

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on May 12, 2023

Este tutorial demonstrará como usar os métodos GetFolder e GetFile do FileSystemObject.

Obter Propriedades de Pasta e Arquivo com FileSystemObject do VBA

O método GetFolder retorna um objeto Folder correspondente à pasta em um caminho especificado e permite acessar suas propriedades. O método GetFile faz o mesmo com o arquivo especificado.

Definir Referência do VBA

Primeiro, ao usar FileSystemObjects, talvez seja necessário definir uma referência à biblioteca de tempo de execução de scripts VB: abra o Visual Basic Editor(ALT+F11), selecione Ferramentas > Referências no menu suspenso e marque a caixa de seleção ‘Microsoft Scripting Runtime’.

janela scripting runtime

FileSystemObject

Em segundo lugar, você deve criar o FileSystemObject:

Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")

Agora você tem acesso ao GetFolder e aos outros métodos do FileSystemObject.

Uso do Método GetFolder

Depois de especificar a pasta que deseja acessar

Set fld = FSO.GetFolder("C:\Src\")

você pode copiar a pasta:

fld.Copy "C:\NovaPasta\"

mover a pasta:

fld.Move "C:\NovaPasta\"

excluir a pasta:

fld.Delete

ou criar um novo arquivo de texto na pasta:

fld.CreateTextFile "NovoArquivoTexto.txt"

Ao usar esse método, você obtém acesso às propriedades da pasta, como seus atributos (fld.Attributes), a data e a hora em que foi criada (fld.DateCreated), acessada pela última vez (fld.DateLastAccessed), modificada pela última vez (fld.DateLastModified), a letra da unidade (fld.Drive), o nome e o nome abreviado (fld.Name, fld.ShortName), seu caminho e caminho curto (fld.Path, fld.ShortPath), seu tamanho (fld.Size), seu tipo (fld.Type), sua pasta pai (fld.ParentFolder), verificar se é uma pasta raiz (fld.IsRootFolder) ou você pode fazer loop, contar etc. seus arquivos (fld.Files) ou subpastas (fld.SubFolders).

Colocar tudo isso em um procedimento teria a seguinte aparência:

Sub ExemploFSOGetFolder()
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set fld = FSO.GetFolder("C:\Src\")

    Debug.Print fld.DateCreated
    Debug.Print fld.Drive
    Debug.Print fld.Name
    Debug.Print fld.ParentFolder
    Debug.Print fld.Path
    Debug.Print fld.ShortPath
    Debug.Print fld.Size
    Debug.Print fld.Files.Count
    Debug.Print fld.Type

    For Each fold In fld.SubFolders
        Debug.Print fold.Name
    Next fold

    For Each fil In fld.Files
        Debug.Print fil.Name
    Next fil

End Sub

Observe que você pode pressionar Ctrl + G para ver o resultado de Debug.Print na janela imediata do VBA.

Método GetParentFolderName

Como alternativa à maneira mencionada acima, você pode acessar o nome da pasta pai de uma pasta usando este código:

Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject") 

ParentFold= FSO.GetParentFolderName("C:\ParentTeste\Teste\")

ParentFold será, neste caso, “C:\ParentTeste\”.

Observe que esse método não resolverá o caminho, nem verificará a existência do caminho especificado.

Método GetSpecialFolder

Com o método GetSpecialFolder, passando 0, 1 ou 2 como argumento, você pode obter o caminho da pasta do Windows (com arquivos instalados pelo sistema operacional Windows), o caminho da pasta do sistema (com bibliotecas, fontes e drivers de dispositivo) e o caminho da pasta temporária (a pasta usada para armazenar arquivos temporários), respectivamente.

Sub ExemploFSOGetSpecialFolder()
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")

    Debug.Print FSO.GetSpecialFolder(0) 'Resultado pode ser: C:\Windows\System32

End Sub

Método GetFile

Você pode usar o método GetFile de forma muito semelhante ao método GetFolder. Depois de especificar o arquivo que deseja acessar

Set fil = FSO.GetFile("C:\Src\Test.xlsx")

você pode copiar o arquivo:

fil.Copy "C:\Dst\"

mover o arquivo:

fil.Move "C:\Dst\"

excluir o arquivo:

fil.Delete

ou abri-lo como um objeto TextStream:

fil.OpenAsTextStream

As propriedades do arquivo, como seus atributos, a data e a hora em que foi criado, o último acesso ou a última modificação, a letra da unidade, o nome e o nome abreviado, o caminho e o caminho abreviado, o tamanho, o tipo e a pasta pai podem ser acessados da mesma forma descrita no método GetFolder.

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA