Saltar al contenido

Macro para copiar o mover archivos


Recommended Posts

Buenas noches a los integrantes de este prestigioso foro, en esta ocasion recurro a Uds, para que brinde su ayuda con una macro, el cual me permita copiar o mover los archivos con un nombre particular MN PIA, el cual detallo a continuacion.

*La informacion (archivos) se encuentra en una carpeta especifica (en este caso esta en la unidad "D:\PLANILLAJE PTO ILO\AÑO 2020\PLANILLAJE"

AFPNET PTO ILO MN PIA 10-10-2020 20-10-17 HRS.txt
CONSOLIDADO CONTAB. 01 GENERAL MN PIA 10-10-20_20-10-30 HRS.xlsx
CONSOLIDADO PTO ILO MN PIA 10-10-2020 20-10-30 HRS.xlsm
DATA DE JORNADAS_BACKUP MN PIA 10-10-2020 19-9-29 HRS.xlsx
PLLA MN PIA PTO ILO MN SETIEMBRE DEL 2020 10-10-20_20-10-31 HRS.xlsx

 

y dentro de ella existe otra carpeta que fue creada mendiante una macro con el nombre MN PIA SETIEMBRE DEL 2020 y lo que requiero es copiar o mover los archivos que contengan la frase MN PIA a la carpeta mencionada.

Adjunto link de los archivos mencionados:

https://drive.google.com/file/d/1-uVn_SIzuoUbAHfGbjYQBJTb4XVTWtPR/view?usp=sharing

Desde ya agradezco su apoyo.

Enlace a comentario
Compartir con otras webs

Hace 7 horas, SALAVERRINO dijo:

Desde ya agradezco su apoyo.

No me queda claro mada sobre tu duda:

  • La macro la debes ejecutar dede algún archivo excel ¿Cuál?
  • ¿Lo que quieres es mover de?

"D:\PLANILLAJE PTO ILO\AÑO 2020\PLANILLAJE"

a

"D:\PLANILLAJE PTO ILO\AÑO 2020\PLANILLAJE\MN PIA SETIEMBRE DEL 2020"

Enlace a comentario
Compartir con otras webs

Hace 3 horas, Haplox dijo:

No me queda claro mada sobre tu duda:

  • La macro la debes ejecutar dede algún archivo excel ¿Cuál?
  • ¿Lo que quieres es mover de?

"D:\PLANILLAJE PTO ILO\AÑO 2020\PLANILLAJE"

a

"D:\PLANILLAJE PTO ILO\AÑO 2020\PLANILLAJE\MN PIA SETIEMBRE DEL 2020"

Buenos dias @Haploxefectivamente los archivos mencionado se deben copiar o mover a la carpeta "D:\PLANILLAJE PTO ILO\AÑO 2020\PLANILLAJE\MN PIA SETIEMBRE DEL 2020", tambien me olvide de comentar que la direccion "D:\PLANILLAJE PTO ILO\AÑO 2020\PLANILLAJE\" sera fija y la carpeta "MN PIA SETIEMBRE DEL 2020" sera variable dependiendo el nombre de la MN XXX mes XXX DEL 2020  asimismo los archivos mencionados y como indicas la macro se debe ejecutar dentro de un archivo excel, el cual lo insertare como nuevo modulo.

Espero haber sido un poco mas especifico del requerimiento que indicado.

Enlace a comentario
Compartir con otras webs

Hace 17 horas, SALAVERRINO dijo:

la carpeta "MN PIA SETIEMBRE DEL 2020" sera variable dependiendo el nombre de la MN XXX mes XXX DEL 2020

Entonces no es tan sencillo como planteabas al principio. Es más, puede llegar a se un jaleo ?. Porque en los ficheros que has puesto, todos parecen ser de Octubre, y quieres moverlos a una carpeta de Septiembre:huh:

Hace 17 horas, SALAVERRINO dijo:

como indicas la macro se debe ejecutar dentro de un archivo excel, el cual lo insertare como nuevo modulo

¿Y qué fichero es? ¿Alguno de los que has subido? ¿Uno en blanco?...

Enlace a comentario
Compartir con otras webs

Buenos días @Haplox, lo que requiero es una macro el cual me permita copiar o mover 5 archivos a una carpeta especifica (el cual será siempre variable) y que es creada mediante una macro y que paso a describir:

 

*La carpeta de trabajo siempre es: D:\AGENCIAS MARITIMAS\PTO ILO\POGRAMA VIGENTE AÑO 2020 (fija)

 

*Dentro de toda esta dirección tengo otras carpetas que son variables, ejemplo 01 BBC ONTARIO, 02 ASIA PEARL, etc, etc y lo que quisiera ahora es trabajarlo como una carpeta fija con el nombre PLANILLAJE que se sumaría a la dirección anterior y que quedaría así:

D:\AGENCIAS MARITIMAS\PTO ILO\POGRAMA VIGENTE AÑO 2020\PLANILLAJE\ (acá estarán todos los archivos que suelo trabajar como se aprecia en la:

  IMAGEN1.


 

Al ejecutarse el archivo INGRESO DE JORNADA ILO mediante una macro crea 2 carpetas: BOLETAS y MN PIA SETIEMBRE DEL 2020, quedando así la nueva dirección: D:\AGENCIAS MARITIMAS\PTO ILO\POGRAMA VIGENTE AÑO 2020\PLANILLAJE\

 

IMAGEN2.

posteriormente se ejecuta el archivo SISTEMA DE CALCULOS PLANILLAJE ILO mediante otra macro nos crea los siguientes archivos:

AFPNET PTO ILO MN PIA 10-10-2020 20-10-17 HRS.txt

CONSOLIDADO CONTAB. 01 GENERAL MN PIA 10-10-20_20-10-30 HRS.xlsx

CONSOLIDADO PTO ILO MN PIA 10-10-2020 20-10-30 HRS.xlsm

DATA DE JORNADAS_BACKUP MN PIA 10-10-2020 19-9-29 HRS.xlsx

PLLA MN PIA PTO ILO MN SETIEMBRE DEL 2020 10-10-20_20-10-31 HRS.xlsx

y he aquí el meollo del asunto, que básicamente lo que pretendo es que mediante una macro  (nuevo módulo) que se anexara al archivo SISTEMA DE CALCULOS PLANILLAJE ILO permita copiar o mover a la carpeta MN PIA SETIEMBRE DEL 2020 los 5 archivos que contengan la palabra MN PIA y que coincida con la carpeta creada, espero que me puedas ayudar.

Vuestra cita:

Entonces no es tan sencillo como planteabas al principio. Es más, puede llegar a se un jaleo ?. Porque en los ficheros que has puesto, todos parecen ser de Octubre, y quieres moverlos a una carpeta de Septiembre.

"lo que basicamente y es importante es que copie o mueva el archivo o archivos en base a la palabra MN PIA dependientemente de cualquier fecha que se aprecie y coincida con el nombre de la carpeta creada MN PIA SETIEMBRE DEL 2020"

imagen1.png

imagen2.png

Enlace a comentario
Compartir con otras webs

Buenos dias @Haploxadjunto archivo que me permite crear las carpetas antes mencionadas y mediante otra macro que adicionare a este mismo archivo permita copiar o mover los 5 archivosdetallos a la carpeta MN PIA SETIEMBRE DEL 2020 y que estos archivos se relacione con la palabra MN PIA.

AFPNET PTO ILO MN PIA 10-10-2020 20-10-17 HRS.txt
CONSOLIDADO CONTAB. 01 GENERAL MN PIA 10-10-20_20-10-30 HRS.xlsx
CONSOLIDADO PTO ILO MN PIA 10-10-2020 20-10-30 HRS.xlsm
DATA DE JORNADAS_BACKUP MN PIA 10-10-2020 19-9-29 HRS.xlsx
PLLA MN PIA PTO ILO MN SETIEMBRE DEL 2020 10-10-20_20-10-31 HRS.xlsx

Saludos.

INGRESO DE JORNADA ILO.xlsm

Enlace a comentario
Compartir con otras webs

a ver @SALAVERRINO , porque si  no hacemos nada no nos vamos a enterar ?

Te dejo una solución.

  • Copia todos los archivos en UN MISMO DIRECTORIO
  • Accede desde el userform. El botón ahora es "Crear Carpetas y Mover Archivos"
  • Al pulsar, te crea la carpeta según tu código y mueve los archivos a esa carpeta creada
  • Ahora mismo está preparada para que el archivo "INGRESO DE JORNADA ILO.xlsm" ESTÉ EN LA MISMA CARPETA que los archivos

Mira a ver si tienes que modificar las rutas y vamos siguiendo. El código está comentado para que puedas seguirlo

 

MN_PIA.zip

Enlace a comentario
Compartir con otras webs

Buenas tardes @Haplox de acuerdo a lo indicado, estoy copiando los archivos en la siguiente dirección:

G:\Nueva carpeta\34 PIA - MODIFICACION PLANILLAJE

y al ejecutar el archivo con el nombre Copia de INGRESO DE JORNADA ILO.xlsm

emite los siguientes errores, para lo cual adjunto imagen.

Pero revisando los archivos cada uno tiene el nombre correcto.

Saludos

 

SEGUNDO ERROR.jpg

PRIMER ERROR.jpg

Enlace a comentario
Compartir con otras webs

Hace 17 horas, SALAVERRINO dijo:

emite los siguientes errores, para lo cual adjunto imagen.

  • ¿Están todos los ficheros, incluido el principal, en la misma carpeta?
  • ¿La macro te ha creado dentro de ese directorio la carpeta "MN PIA SETIEMBRE DEL 2020"?
  • ¿La has creado con otro nombre?

EL problema no es el archivo, es la carpeta dónde moverlo

Enlace a comentario
Compartir con otras webs

Buenas tardes @Haploxy en lugar de usar el método mover, se realiza una copia de los archivos, dará el mismo efecto de mencionar archivo no encontrado, buscando por foros del Internet encontré este código y casi similar al realizado por tu persona

Sub MoverArchivos()

    Dim MiArchivo As String
    
    MiArchivo = dir("C:\Users\usuario\Documents\*.txt")
    
    If MiArchivo = "" Then
        MsgBox "No hay archivos a mover.", vbExclamation, "EXCELeINFO"
    Else
    
    Do Until MiArchivo = ""
    
        Name "C:\Users\usuario\Documents\" & MiArchivo As "C:\Users\usuario\Documents\carpetanueva\" & MiArchivo
        MiArchivo = dir
    
    Loop
    End If

End Sub

y como mencionas debe ser por la ubicación de la ruta, a pesar de que todos los archivos están en la misma ubicación (directorio) y al ejecutar el archivo INGRESO DE JORNADA ILO  dentro de su userform crear la carpeta MN PIA SETIEMBRE DEL 2020 y ahí se cae el proceso.

Saludos.

Enlace a comentario
Compartir con otras webs

Buenos dias @Haplox, para comentarte que buscando ejemplos en los foros y algunas recomendaciones y sugerencias como la vuesta, puede realizar que la macro se ejecute, donde adjunto codigo de la macro y archivo, dentro del codigo se adiciono 2 variables, que esta comentada y la parte donde comentas realice un desagreado:

'------------ COMPROBAMOS Y MOVEMOS ARCHIVOS--------------------------------

        If fich Like "*MN PIA*" Then 'Comparamos el nombre con "MN PIA"

            Name fich As sRuta & sSeparadorRuta & sNombreCarpeta & "\" & fich 'Si coincide lo movemos a la carpeta creada
        End If

DESAGREGADO:

     If fich Like "*MN PIA*" Then 'Comparamos el nombre con "MN PIA"
            SArchivo_a_mover = sRuta & "\" & fich
            sArchivo = sRuta & "\" & sNombreCarpeta & "\" & fich
            Name SArchivo_a_mover As sArchivo
        End If

 

Option Explicit
Sub Crear_Carpeta_Y_Guardar()
Application.ScreenUpdating = False
Application.DisplayAlerts = False

    Dim sRuta As String, sNombreCarpeta As String, ruta As String, fich As String
    Dim sSeparadorRuta As String
    Dim nom, nomb2 As String
    
'*****************************************
'*****************************************
' SE ADICIONO ESTAS 2 VARIABLES
    
    Dim sArchivo As String
    Dim SArchivo_a_mover As String

'*****************************************
'*****************************************
    
    nomb2 = Sheets("INGRESO").Cells(4, "AD")
    nom = Sheets("INGRESO").Cells(3, "AD")
    sSeparadorRuta = Application.PathSeparator
    
    sRuta = Application.ActiveWorkbook.Path
    sNombreCarpeta = "MN " & nom & " " & nomb2
    
    If dir(sRuta & sSeparadorRuta & sNombreCarpeta, vbDirectory) = Empty Then
        MkDir (sRuta & sSeparadorRuta & sNombreCarpeta)
    End If
    
    '------------ COMPROBAMOS Y MOVEMOS ARCHIVOS--------------------------------
    fich = dir(ThisWorkbook.Path & "\*.xls*", vbArchive) 'TODO TIPO DE ARCHIVO EXCEL
    Do While fich <> "" 'Recorremos todos los archivos de la Carpeta
        If fich Like "*MN PIA*" Then 'Comparamos el nombre con "MN PIA"
        
'******************************************************************************
'******************************************************************************
' SE HIZO UN DESAGREGADO

            SArchivo_a_mover = sRuta & "\" & fich
            sArchivo = sRuta & "\" & sNombreCarpeta & "\" & fich
            
            Name SArchivo_a_mover As sArchivo
            
'******************************************************************************
'******************************************************************************

        End If
    fich = dir() 'Ponemos a 0 el nombre del archivo para leer el siguiente
    Loop
    '------------ COMPROBAMOS Y MOVEMOS ARCHIVOS--------------------------------
    
    Application.ActiveWorkbook.SaveCopyAs Filename:=sRuta & sNombreCarpeta

MsgBox "SE HIZO TRANSLADO DE ARCHIVOS"

Application.DisplayAlerts = True
Application.ScreenUpdating = True
    
End Sub

y con esas adiciones la macro comenzo a mover los archivos que tiene la frase "MN PIA" y que concuerde con la carpeta, pero se presento un detalle cuando ingreso a la pestaña INGRESO en la celda AD3 cambio el nombre de la MN y en AC4 la fecha de hoy, crea la nueva carpeta que para mi idea esta bien, y ya tengo los nuevos 4 archivos generados con la frase MN DESPERTAR, pero realizar una simulacion que los archivos se movieron a la carpeta, cuando realmente no hizo nada porque dentro de la macro aun esta determinada la frase MN PIA y eso no es lo ideal, ahora mi pregunta es, si se podria modicar la macro para que ahora que cuando se crea una nueva carpeta y coindicida con los archivos con la frase MN ...., se muevan automaticamente, sin necesidad de estar ingresando a la macro y modificar la palabra.

Saludos.

 

INGRESO DE JORNADA ILO.xlsm

Enlace a comentario
Compartir con otras webs

Hace 15 horas, SALAVERRINO dijo:

se muevan automaticamente, sin necesidad de estar ingresando a la macro y modificar la palabra.

Si estas cosas se dijeran desde el principio... :(. Si el "MN lo quesea" va a estar almacenado en la variable "nom", pon lo siguiente:

If fich Like "*MN" & nom & "*" Then
Enlace a comentario
Compartir con otras webs

  • 1 month later...

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.