VBA GetFolder & GetFile (Obter Propriedades de Arquivos e Pastas)
In this Article
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’.
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\"
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\"
fil.Move "C:\Dst\"
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.