Depois de criar uma nova instância do FileSystemObject, pode usá-lo para trabalhar com unidades, pastas e arquivos no sistema de arquivos.O procedimento a seguir retorna os arquivos em uma pasta específica em um objeto Dictionary. O procedimento GetFiles recebe três argumentos:
Retornando um valor booleano que indica se o procedimento foi bem sucedido.O caminho para o diretório,Um objeto Dictionary, eUm argumento booleano opcional que especifica se o procedimento deve ser chamado recursivamente.
O primeiro procedimento usa o método GetFolder para retornar uma referência a um objeto Folder. Em seguida, percorre a coleção de arquivos da pasta e adiciona o caminho e o nome do arquivo para cada arquivo no objeto Dictionary. Se o argumento blnRecursive estiver definido como True, o procedimento é chamado recursivamente, GetFiles para retornar os arquivos em cada subpasta.
Adicione uma referência a Scripting Runtime object library no seu projeto VBA.
Ao instalar as aplicações do MS Office, uma das bibliotecas de objetos instalados no seu sistema é o Scripting Runtime object library. Esta biblioteca contém objetos úteis a partir de qualquer VBA ou script, e por isso é fornecido como uma biblioteca separada.Os objetos na Scripting Runtime object library facilitam o acesso ao sistema de arquivos, e torna a leitura e gravação num arquivo texto muito mais simples.Por padrão, nenhuma referência é definido para esta biblioteca, então você deve definir uma referência para que você possa usá-lo. Se o Scripting Runtime object library não aparecer na caixa de diálogo de Referências (menu Ferramentas), você deve ser capaz de encontrá-la na subpasta C:\Windows\System\Scrrun.dll.
Utilize o código abaixo:
Function GetFiles (strPath As String, dctDict As Dictionary, Optional blnRecursive As Boolean) As Boolean' Esta função retorna todos os arquivos que estiverem dentro de um diretório' como um objeto Dictionary. Se efetuarmos a chamada recursivamente, este retornará' todos os arquivos nas subpastas.Dim fsoSysObj As FileSystemObjectDim fdrFolder As FolderDim fdrSubFolder As FolderDim filFile As File' Retorna um novo FileSystemObject.Set fsoSysObj = New FileSystemObjectOn Error Resume Next' Obtém a pasta.Set fdrFolder = fsoSysObj.GetFolder(strPath)If Err <> 0 Then' Incorrect path.GetFiles = FalseGoTo GetFiles_EndEnd IfOn Error GoTo 0' Efetua o Loop através da coleção de arquivos, adicionando-os ao dictionary.For Each filFile In fdrFolder.FilesdctDict.Add filFile.Path, filFile.PathNext filFile' Se o flag Recursivo for true, executa recursivamente.If blnRecursive ThenFor Each fdrSubFolder In fdrFolder.SubFoldersGetFiles fdrSubFolder.Path, dctDict, TrueNext fdrSubFolderEnd If' Retorna True se não ocorrer nenhum erro.GetFiles = TrueGetFiles_End:Exit FunctionEnd Function
Você pode usar a seguinte função para testar o procedimento GetFiles. Esta cria um novo objeto Dictionary e passa para o procedimento GetFiles.
Sub TestGetFiles()' Call to test GetFiles function.Dim dctDict As DictionaryDim varItem As Variant' Create new dictionary.Set dctDict = New Dictionary' Call recursively, return files into Dictionary object.If GetFiles(GetTempDir, dctDict, True) Then' Print items in dictionary.For Each varItem In dctDictDebug.Print varItemNextEnd IfEnd Sub
Você também pode usar o objeto FileSearch, para encontrar um arquivo ou grupo de arquivos. O objeto FileSearch tem certas vantagens em que você pode pesquisar subpastas, para um determinado tipo de arquivo, ou pesquisar o conteúdo de um arquivo, basta definir algumas propriedades.Por outro lado, a Scripting Runtime object library permite que trabalhe com arquivos individuais ou pastas como objetos que têm seus próprios métodos e propriedades. Por exemplo, o procedimento ChangeFileAttributes, altera atributos de arquivo, definindo a propriedade de atributos para cada objeto de arquivo na coleção de arquivos de um objeto de pasta particular.
Tags: VBA, Tips, files, directory, folder, Scripting Runtime object library, Scrrun.dll, FileSystemObject, GetFiles