domingo, 1 de junho de 2014

2. GERANDO UMA ÁRVORE DE ARQUIVOS - INTERMEDIÁRIO

           
           Talvez o seu caso seja outro. De repente, você precisa saber quais arquivos estão nos diretórios, para depois decidir se vai abrir ou não os arquivos, ou simplesmente determinar quais dever ser abertos.
            Podemos então, gerar uma árvore com os arquivos que estão nos diretórios determinados por você.
            Antes de mostrar a você o código, devemos fazer algo muito importante. Temos que habilitar uma biblioteca do VBA.
            Primeiro, vá ao menu “Ferramentas” do editor do VBA e entre em “Referências”.



            Agora, habilite a biblioteca “Microsoft Scripting Runtime” e click em OK.


            Pronto, agora já podemos começar a desenvolver o nosso código.
Dim L As Long                                               'Declaramos a variável que receberá a linha
Sub GerArvore()
   
    Const strCaminho As String = "C:\ExcelECia\"            'Idendificamos o caminho onde os arquivos serão procurados
   
    'Declaração de variáveis para leitura dos arquivos/pastas
    Dim fso As Scripting.FileSystemObject
    Dim fld As Scripting.Folder
   
    'Aqui vamos determinar o caminho em que os arquivos serão buscados
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fld = fso.GetFolder(strCaminho)                     'Permite entrar no diretorio e localizar os arquivos
   
    Sheets("Árvore").Select                                 'selecionamos a planilha onde vamos gerar a árvore
    With ActiveSheet
        .Cells.Delete                                       'Limpa planilha
        'criamos um matriz simples para montar o cabeçalho da planilha
        .Range("A1:E1") = Array("Diretório", "Caminho completo", "Nome", "Data de modificação", "Data de criação")
        L = 2
       
        LocalizaArquivos fld                                'Chama rotina para localizar os arquivos
       
        .Columns.AutoFit
    End With
   
    MsgBox "Consulta realizada com sucesso!", vbInformation, "Macro consulta arquivos"
   
End Sub

            Esta é a primeira parte do nosso código. Na verdade é apenas o pano de fundo para outra rotina que vamos desenvolver e que localizará os endereços dos arquivos. Não se esqueça de nomear uma planilha como “Árvore”.
            Fique despreocupado, pois no final deste capítulo, vou disponibilizar pra você o arquivo de exemplo.
Antes de desenvolvermos a segunda parte do código, criei uma outra pasta dentro do caminho padrão que declaramos, veja.



            Fiz isto para testarmos no nosso código, já que ele deve percorrer também as subpastas do diretório e trazer o endereço dos arquivos que desejamos buscar.
            Agora vamos à segunda parte do código.

Function LocalizaArquivos(fld As Folder)
   
    Dim subfld As Scripting.Folder                          'Cria script para vasculharmos as subpastas
    Dim fl As Scripting.File
   
       
            For Each fl In fld.Files                        'Para cada arquivos dentro da pasta que vasculhamos
                If UCase(Left(fl.Name, 6)) = "FILIAL" Then  'Se o nome do arquivo começar com Filial
                    Cells(L, "A") = fl.ParentFolder         'retorna o endereço da pasta onde está o arquivo
                    Cells(L, "B") = fl.Path                 'retorna o endereço completo do arquivo
                    Cells(L, "C") = fl.Name                 'retorna o nome do arquivo
                    Cells(L, "D") = fl.DateLastModified     'retorna a data da última modificação
                    Cells(L, "E") = fl.DateCreated          'retorna a data de criação do arquivo
                   
                    ActiveSheet.Hyperlinks.Add Anchor:=Cells(L, "A"), Address:=Cells(L, "A") 'cria hinperlink para pasta do arquivo
                    ActiveSheet.Hyperlinks.Add Anchor:=Cells(L, "B"), Address:=Cells(L, "B") 'cria hinperlink para endereço completo do arquivo
           
                    L = L + 1                               'incrementa a linha
                    Cells(L, "A").Select                    'seleciona a proxima linha que receberá o novo endereço
                End If
               
            Next fl
   
    For Each subfld In fld.SubFolders                       'percorre as subpastas para procurar os arquivos desejados
        LocalizaArquivos subfld
    Next subfld
   
End Function

Agora é só salvar em um módulo e rodar. O resultado será este.


            Perceba, que o código trouxe até o arquivo que estava na subpasta. Legal demais.

            No próximo capítulo, vamos aprender a abrir arquivos, usando a Árvore que acabamos de gerar. See you later!!!

Para acessar o curso completo Clique aqui 

Nenhum comentário: