Modificar macro que busca archivos y cambia de color el texto dependiendo si esta o no, para que la búsqueda abarque subcarpetas
Ya tengo dos macros una ya realiza la búsqueda en subcarpetas y la otra macro que solo buscaba en una carpeta y hace el cambio de color dependiendo si encontró o no el archivo intente modificarla para que en la macro que realiza la revisión de si están o no los archivos también accediera la búsqueda en las subcarpetas pero no me queda espero me pueda ayudar a estructurarla a continuación le dejo las macros por separado gracias :3
Búsqueda en carpeta y subcarpetas
Dim rutas As New Collection
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.Dante Amor
If Target.Column <> 2 Then Exit Sub 'sólo se ejecutará en col B'
If Target.Row < 9 Then Exit Sub 'sólo se ejecuta a partir de la fila 9'
If Target.Value = " " Or Target.Value = "" Then Exit Sub 'no se ejecutara en celdas vacias
'ChDir "C:\Users\cari\Documents\libros\" 'ruta de carpeta donde estan los documentos
ChDir ThisWorkbook.Path & "\"
'ChDir "C:\trabajo\"
Set rutas = Nothing
nombre = Target.Value
If UCase(Right(nombre, 4)) = ".PDF" Then
nuevo = Left(nombre, Len(nombre) - 4)
Else
nuevo = nombre
End If
arch = encuentraarch(nuevo)
If arch <> "" Then
If MsgBox("el archivo existe. Desea abrirlo??", vbYesNo, "ATENCION") = vbNo Then Exit Sub
'ActiveWorkbook.FollowHyperlink arch
Shell "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe " & arch
Else
If MsgBox("no fue localizado desea buscarlo manualmente", vbYesNo, "ATENCION") = vbNo Then Exit Sub
On Error GoTo salida
ChDir "C:\Users\cari\Documents\libros\"
archivo = Application.GetOpenFilename
If archivo = False Then Exit Sub
Shell "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe " & archivo
Exit Sub
End If
salida: MsgBox "Listo"
End Sub
'
Function encuentraarch(nuevo)
'Por.Dante Amor
On Error Resume Next
pPath = CurDir()
rutas.Add pPath
pPath = pPath & "\"
Call agregadir(pPath)
For Each sd In rutas
dato = sd & "\*" & nuevo & "*.pdf"
arch = Dir(sd & "\*" & nuevo & "*.pdf")
Do While arch <> ""
encuentraarch = sd & "\" & arch
Exit Function
Loop
Next
Set rutas = Nothing
End Function
'
Sub agregadir(lpath)
'Por.Dante Amor
'Agrega directorios
Dim SubDir As New Collection
If Right(lpath, 1) <> "\" Then lpath = lpath & "\"
DirFile = Dir(lpath & "*", vbDirectory)
Do While DirFile <> ""
'Agrega subdirectorios a collection
If DirFile <> "." And DirFile <> ".." Then _
If ((GetAttr(lpath & DirFile) And vbDirectory) = 16) Then _
SubDir.Add lpath & DirFile
DirFile = Dir
Loop
'
For Each sd In SubDir
rutas.Add sd
Call agregadir(sd)
Next
End Sublo que necesito es que la macro revisar archivos también realice la busqueda en las subcarpetas copie las no encontradas en la hoja 5 a partir de la celda A1 y que se limpie la hoja5 cada que se ejecute la macro revisar archivo, que se complemente o integre la macro de arriba con la de abajo a la hora de hacer la revisión en los comentarios le dejo la macro revisiónArchivo
De antemano gracias :3 espero tenga lindo día y muy buen Fin de semana