Vaciar una carpeta y copiar a ella archivos .pdf con vba

Necesito una macro que haga dos pasos.

1 Borrar los archivos .pdf de la CarpetaDestino

2 leer una columa de una tabla de excel, en la que aparecen los nombres de archivos .pdf que se encuentran en CarpetaOrigen los cuales quiero COPIAR a la CarpetaDestino.

1 Respuesta

Respuesta
2

1 - Para borrar archivos de una carpeta. Debes indicar la ruta de tu Carpeta Destino

Sub EliminaArchivos()
'x Elsamatilde
'se establece la carpeta donde se ubican los pdf
Dire = "C:\Users\......."  'aquí la ruta de la carpeta destino
'se crea la referencia al objeto Filesystem
With CreateObject("scripting.filesystemobject")
    With .GetFolder(Dire)
'se elimina cada archivo con extensión pdf
    For Each Archi In .Files
        If Right(Archi, 3) = "pdf" Then Kill Archi
    Next Archi
    End With
End With
End Sub

2 - Como no indicas dónde está la tabla imaginaré que en hoja activa, col A, a partir de la fila 2.

Ajusta este detalle y las rutas de tus carpetas origen y destino.

Sub MueveArchivos()
'x Elsamatilde
'se asume que los nombres de los pdf no incluyen la ruta
'se declaran las carpetas con barra final
origen = "C:\Users\CarpetaOrigen\"
destino = "C:\Users\CarpetaDestino\"
'se recorre la col A de la hoja activa, desde fila 2 hasta celda vacía
[A2].Select
While ActiveCell <> ""
    Name origen & ActiveCell As destino & ActiveCell
    'se pasa a la fila siguiente
    ActiveCell.Offset(1, 0).Select
Wend
End Sub

Si estas macros resuelven tu consulta no olvides valorarla, Excelente o Buena. Sino comenta para seguir tratándola.

PD) En lo posible deja una consulta por cada tema así los títulos colaboran con el buscador del sitio.

Gracias por tu respuesta, el apartado de vaciado ya he consguido que funcione.

Sin embargo la segunda parte no he conseguido que funcione. Se trata efectivamente de una tabla en la hoja activa, en la que en A2 comienzan los códigos que nombran el pdf que debe buscar y copiar en caso que en la columna L este escrito un "SI". Lo que hago es realizar un filtrado de los "SI" de forma que se me queda una tabla con todos los que debo copiar.

tu código me da error 53 (archivo no encontrado ) en la siguiente línea:

Name origen & ActiveCell As destino & ActiveCell

yo había pensado este codigo desde un primer momento:

Private Sub CommandButton4_Click()
'generar pdf
For Each Celda In Range("A2", Range("A2").End(xlDown)) 
FileCopy "G:\*direc.origen*\" + Celda.Value + ".pdf", "Q:\*direc.destino*\" + Celda.Value + ".pdf"
Next
End Sub

Me funciona bien, pero mi problema es que al hacerlo funcionar realizando un filtrado me copia el .pdf de cada uno de los códigos que habia hasta el último "SI". Es decir imagina una lista de 20 códigos donde solo el 5 y el 17 tienen el "SI", cuando hago el filtrado solo me aparecen esos dos códigos pero su nombre de fila sigue siendo el 5 y el 17 por lo que con la macro que yo puse me copia los .pdf del 1 al 17.

¿Se te ocurre alguna solución? Espero haberme explicado bien. Gracias.

Ya esta solucionado, conseguí hacerlo mediante un bucle y una condición

Gracias un saludo

Que bueno que tengamos diferencias horarias... les da tiempo a pensarlo.

Solo quiero hacerte notar algo. Lee por favor tu punto 2: no habías indicado que se compara con otra col ni que se filtra ni ninguna aclaración.

Cuando tengas alguna otra consulta deja la mayor cantidad posible de información: macros iniciadas, imagen de la hoja con los datos ... como para que te enviemos la solución más ajustada a tu caso.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas