Mover archivos excel macro con condiciones

Tengo mil archivos nombrados así:

001 foto1

002foto1

003foto1

004foto1

004foto2

004foto3

004foto4

005foto 1

(...)

Y quiero que todas las fotos 001 se vallan a una carpeta llamada x1, la 002 a la x2, la 003 a la x4 y así sucesivamente, por ahora tengo la función para crear carpetas, sin embargo me falta para mover las carpetas cumpliendo la condición del subfijo.

¿Alguien sabe como puedo hacer?

1 Respuesta

Respuesta
1

No queda claro cuál es el índice a considerar. Por ejemplo, ¿para 004Foto1 a cuál carpeta enviarás?

Es posible mover archivos a otras carpetas con la instrucción:

Name libroAnt As libroCopia

Donde 'libroAnt' es la variable que indica ruta y nombre de archivo origianl (con su extensión) y 'libroCopia' indica nueva carpeta + nombre de archivo.

Aclara el tema del subindice y te pasaré la macro para pasar los archivos de carpeta.

Hola Elsa,

Depende del inicio del archivo, por ejemplo el archivo 004Foto iría a la carpeta x4, donde todo quedaría determinado en este caso por los primeros dígitos del archivo.

Gracias.

Estoy asumiendo algunos detalles que tendrás que ajustar en la macro si hiciera falta. Dejo notas allí.

- La lista de archivos a mover se encuentra en col A a partir de fila 2.

- Las subcarpetas se encuentran en la misma carpeta que el libro que contiene la macro. Si se trata de otra ruta reemplaza el texto 'ThisWorkbook. Path' por la ruta completa de tu destino.

- Pueden ser archivos de diferente extensión. Pero siempre con un nro delante en su nombre.

Entra al Editor de macros (con teclas ALT + F11)

Inserta un módulo y allí copia lo siguiente:

Sub moviendoArchivos()
'x Elsamatilde
'se asume lista de archivos en col A, a partir de fila 2    'AJUSTAR
[A2].Select
'se recorre la col hasta encontrar celda vacía
'posible error de nombre de archivo inválido
On Error Resume Next
While ActiveCell <> ""
    origen = ThisWorkbook.Path & "\" & ActiveCell.Value
    indice = Val(Left(ActiveCell, 3))
    'se guarda con el mismo nombre
    destino = ThisWorkbook.Path & "\x" & indice & "\" & ActiveCell.Value
    'se mueve el archivo de lugar
    Name origen As destino
    'se pasa al registro siguiente
    ActiveCell.Offset(1, 0).Select
Wend
On Error GoTo 0
MsgBox "Fin del proceso."
End Sub

Para ejecutarlo podrás hacerlo desde el mismo Editor o desde la hoja menú Desarrollador, Macros. Otros modos de ejecutar un código lo tengo explicado en la sección Macros de mi sitio.

Te recuerdo que la consulta sigue abierta. Si el tema quedó resuelto no olvides valorarla (opciones Excelente o buena).

Sino solicita mayores aclaraciones, deja imagen de tus carpetas o enviam el libro para revisarlo. Mis correos aparecen en la imagen siguiente:

Recuerda que se te ha respondido en tiempo y forma a tu consulta. No las dejes sin valorar.

Sdos!

Por favor cierra esta también, gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas