Jump to content

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.

Link to post
Share on other sites
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"

Link to post
Share on other sites
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.

Link to post
Share on other sites
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?...

Link to post
Share on other sites

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

Link to post
Share on other sites
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

Link to post
Share on other sites

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.

Link to post
Share on other sites

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

Link to post
Share on other sites
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
Link to post
Share on other sites
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Crear macros Excel

  • Posts

    • Hola a tod@s, Tengo una tabla dinámica. Hay una hoja llamada "iva" con el total de IVA soportado y el total de IVA repercutido. En este último, tengo digamos dos "sub-totales" Lo que pretendo es crear una medida que RESTE al total de las dos cuotas de IVA repercutido, le reste el total de la cuota de IVA soportado. Lo he intentado con la función CALCULATE, SUM y SUMX pero no logro dar con "la tecla". ¿alguien me podría orientar? ... el resultado que tendría que dar como correcto está indicado en la celda G34 pero como digo, no calcularlo manualmente sino creando una MEDIDA. Gracias por vuestras aportaciones. DIFERENCIAcuota.xlsx
    • Hola! Soy nueva en este foro, así que espero estar haciendo esto bien...Me surge una duda al programar una lista para elegir varios valores. Tengo la lista, la elección de valores y todo parece ok, pero me surge el problema al querer mover el rango a uno en concreto y no dejarlo en la primera columna... Quisiera que mi rango estuviera definido por ejemplo entre D7:D20 y si puedo hacerlo en otra pestaña, mejor, alguien me puede ayudar? He puesto esto:  Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column <> 3 Or Target.Row = 2 Then     Exit Sub Else     Form1 End If Cancel = True End Sub
    • Hola, Lo he mirado solo por encima porque voy mal de tiempo, pero creo que el problema esta en tu tabla dinámica, que no esta actualizando bien; en los campos K3:N3 si funcionan al por ejemplo filtrar la la oficina 265, pero los datos de la tabla son erróneos (o eso me parece  a mi) y si intento actualizar la tabla , me da un error (por cambio de nombre de archivo??!!). Esta tarde con mas tiempo lo mirare mas detenidamente. Actualización: Si, definitivamente es eso, actualiza el rango de calculo de la tabla dinámica y funcionara bien.
    • alguien que me pueda orientar en esta consulta ???? gracia
    • Muchas gracias Fpayno por el comentario. Ya miré cómo podría solucionarlo con k.esimo, pero el problema es que, en el listado real de mi hoja Excel, aparecen muchísimas rachas, además de que cada día añado un nuevo valor, por lo que la peor racha de todas, durante mucho tiempo puede ser la misma, pero según añado un resultado diario nuevo, puede que se esté creando una nueva peor racha. Por eso el rango no está definido “para siempre”: empieza con el siguiente valor diferente a cero, y finaliza con el último valor diferente a cero, y entre ellos nunca puede haber un valor igual a 0.  La cuestión es que, una vez que la fórmula MIN me localice el “epicentro” de la peor racha hasta la fecha, la otra fórmula (en la que estoy atascado) sea capaz de identificar cuándo empezó y cuándo terminó esa racha, para así saber cuánto duró (1 día, 2 meses, 5 meses y 2 días...). Cualquier idea será bienvenida!
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy