Conocer cómo extraer archivos de Excel de varias carpetas utilizando Visual Basic para Aplicaciones ( VBA) que puede ahorrar tiempo cuando tenga que buscar en su ordenador los archivos de Excel para almacenarlos en una carpeta. VBA se puede utilizar en aplicaciones de Microsoft Office como Excel para automatizar tareas rutinarias, como la búsqueda de archivos en carpetas. La mejor manera de buscar archivos en varias carpetas es mediante el uso de programación recursiva. Programación recursiva se utiliza cuando se necesita una función para llamarse desde dentro de la función. Cosas que necesitará
Microsoft Office
Ver Más instrucciones
1
lanzamiento de Microsoft Office Excel , haga clic en " programador", y haga clic en "Visual Basic " para iniciar el Editor de Visual Basic . Haga clic en el menú " Insertar" y haga clic en " módulos" para insertar un nuevo módulo de código
2
Escriba lo siguiente para crear un nuevo sub-procedimiento : .
ColFiles Dim As New Collection
3
Copia y pega el siguiente para crear sus variables:
extractPath dévil como secuencia
fileName Dim As String Dim
pos As Integer
4
Defina la ruta en la que desea copiar los archivos de Excel encontrados :
extractPath = "C : \\ temp \\ "
5
Agregue el siguiente código para llamar a la función que va a buscar los archivos de Excel para la extracción :
colFiles RecursiveDir , "F : \\ moreExcelFiles \\", " *. xlsx " , Verdadero
6 < p> Agregue el siguiente código para copiar los archivos que se encuentran en el camino definido en el paso 3 :
vFile Dim As Variant
For Each vFile en colFiles
pos = InStrRev ( vFile , " \\ " , vbTextCompare )
fileName = Right ( vFile , Len ( vFile ) - pos)
FileCopy vFile , extractPath y fileName
Siguiente vFile < br >
End sub
7
Definir la función " RecursiveDir " para buscar las carpetas y sub- carpetas para archivos de Excel :
Public Function RecursiveDir ( colFiles como colección , _
strFolder As String , _
strFileSpec As String , _
bIncludeSubfolders As Boolean ) guía
strTemp dévil como secuencia
colFolders Dim Como New Collection Hotel
vFolderName Dim As Variant
strFolder = TrailingSlash ( strFolder )
strTemp = Dir ( strFolder y strFileSpec )
Do While strTemp < > ; vbNullString
colFiles.Add strFolder y strTemp
strTemp = Dir
Loop
Si bIncludeSubfolders Entonces
strTemp = Dir ( strFolder , vbDirectory )
Do While strTemp < > vbNullString
Si ( strTemp < > ".") Y ( strTemp < > ".." ) Luego
Si ( GetAttr ( strFolder y strTemp ) y vbDirectory ) < > 0 Entonces
colFolders.Add strTemp
End If End If
< p> strTemp = Dir
Loop
For Each vFolderName En colFolders
Call RecursiveDir ( colFiles , strFolder y vFolderName , strFileSpec , True)
Siguiente vFolderName
End If End Function
8
Cree la siguiente función para añadir o quitar el " \\ " de las rutas de las carpetas :
Pública Función TrailingSlash ( strFolder As String ) As String
Si Len ( strFolder ) > 0 entonces
Si Derecha ( strFolder , 1 ) = " \\ " Entonces
TrailingSlash = strFolder
demás
TrailingSlash = strFolder y "\\ "
End If End If
Función End of < br > 9
Haga clic dentro del " extractExcelFiles " sub - procedimiento y haga clic en "F5 " para ejecutar el programa.