Saber como extrair arquivos do Excel a partir de várias pastas usando o Visual Basic for Applications (VBA) você pode economizar tempo quando você precisa procurar seu computador para arquivos do Excel para armazená-los em uma pasta. VBA pode ser usado em aplicações do Microsoft Office , como o Excel para automatizar tarefas de rotina, como a busca por arquivos em pastas . A melhor maneira de procurar por arquivos em várias pastas é usando programação recursiva. Programação recursiva é usado quando você precisa de uma função chamar a si mesma de dentro da função . Coisas que você precisa
Microsoft Office
Mostrar Mais instruções
1
Abra o Microsoft Office Excel , clique em " Desenvolvedor " e clique em " Visual Basic" para iniciar o Editor VB . Clique no menu "Inserir" e clique em " Módulo " para inserir um novo módulo de código
2
Digite o seguinte para criar um novo sub- procedimento : .
Dim colFiles As New Collection
3
Copie e cole o seguinte para criar as suas variáveis :
Dim extractPath as String Dim
fileName as String Dim
pos as Integer
4
Defina o caminho onde você deseja copiar os arquivos do Excel encontrados :
extractPath = "C: \\ Temp \\ "
5
Adicione o seguinte código para chamar a função que vai encontrar os arquivos do Excel para extração :
RecursiveDir colFiles , " F: \\ moreExcelFiles \\ ", " . * xlsx ", True
6
Adicione o seguinte código para copiar os arquivos encontrados no caminho definido na Etapa 3:
Dim vFile as Variant
Para Cada vFile em colFiles
pos
= InStrRev ( vFile , "\\" , vbTextCompare )
fileName = Right ( vFile , Len ( vFile ) - pos)
FileCopy vFile , extractPath & fileName
Próxima vFile < br >
sub End
7
Defina a função " RecursiveDir " para procurar as pastas e sub- pastas para arquivos do Excel :
função Pública RecursiveDir ( colFiles como a recolha, _
strFolder As String , _
strFileSpec As String , _
bIncludeSubfolders as boolean )
Dim strTemp As String Dim
colFolders Como Nova coleção
Dim vFolderName As Variant
strFolder = TrailingSlash ( strFolder )
strTemp = Dir ( strFolder & strFileSpec )
Do While strTemp < > ; vbNullString
colFiles.Add strFolder & strTemp
strTemp = Dir
loop
Se bIncludeSubfolders Então
strTemp = Dir ( strFolder , vbDirectory )
Do While strTemp < > vbNullString
Se ( strTemp <> " . ") e ( strTemp < > ".." ) Então
Se ( GetAttr ( strFolder & strTemp ) e vbDirectory ) < > 0 Then
colFolders.Add strTemp
End If End If
strTemp = Dir
loop
Para Cada vFolderName Em colFolders
Chame RecursiveDir ( colFiles , strFolder & vFolderName , strFileSpec , True)
Próxima vFolderName
End If End Function
8
Crie a seguinte função para adicionar ou remover o "\\ " dos caminhos de pastas :
Pública Função TrailingSlash ( strFolder As String) As String
Se Len ( strFolder ) > 0 Then
Se Right ( strFolder , 1) = "\\ " Então
TrailingSlash = strFolder
Else
TrailingSlash = strFolder & "\\"
End If End If
Função
Fim
< br > 9
Clique dentro do " extractExcelFiles " sub- procedimento e clique em " F5" para executar o programa .