Saltar al contenido

Macro para copiar o mover archivos


Recommended Posts

publicado

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.

publicado
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"

publicado
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.

publicado
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?...

publicado

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

publicado

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

publicado

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

publicado

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

publicado
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

publicado

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.

publicado

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

publicado
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
  • 1 month later...

Archivado

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

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Current Donation Goals

    • Raised 0.00 EUR of 130.00 EUR target
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
    • Hola nuevamente, mi duda sigue siendo la ruta, o rutas, finales que quedan, esas que llamas "relativas"; igual por si acaso pon 3 o 4 de esas, tal cual son y/o se ven en el explorador de cada PC y, de ser posible, en cualquier otro "lado" en que las veas.
    • Hola, tal cual se plantea, solamente con macros (VBA); en todo caso, hacerlo a mano o con "CTRL + ;". Saludos.
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.