Excel - COPIAR UNA CARPETA, PEGARLA EN OTRA CARPETA Y CAMBIAR EL NOMBRE

 
Vista:
sin imagen de perfil
Val: 44
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

COPIAR UNA CARPETA, PEGARLA EN OTRA CARPETA Y CAMBIAR EL NOMBRE

Publicado por santi (24 intervenciones) el 02/11/2018 15:35:47
Hola,

Buenas tardes,

Os agradecería vuestra ayuda para crear una macro que haga varias cosas.

Por un lado estoy en una hoja de un libro. necesito que cambie el nombre del libro por un nombre que tengo en una celda de ese libro.El archivo de excell desde donde lanzaremos la macro tiene de nombre Master XXXX-M-XXX CLIENTE-OBRA1. dentro de este libro hay que ir a la hoja COM_ADMIN y en la celda C4 el nombre que hay que darle al archivo.

Una vez a cambiado el nombre necesito que lo guarde en una carpeta que aún no existe, por lo que necesitaría que la creara

Para crearla tengo una carpeta en una dirección de un servidor (P:\Pedidos\PED_2018\MODELO) y quiero copiarla con los archivos que contiene dentro de otra carpeta (P:\Pedidos\PED_2018\PEDIDOS 2018). Además necesito que una vez pegada le cambie el nombre por el texto que tengo en una celda C3 del archivo excell Master XXXX-M-XXX CLIENTE-OBRA1. dentro de este libro hay que ir a la hoja COM_ADMIN y en la celda C3 esta el nombre que hay que darle al archivo. Una vez creada necesito que guarde el archivo al que le hemos cambiado el nombre.

He encontrado alguna macro que me dice como cambiar el nombre de un archivo por otro, pero el problema es que el nombre del archivo y de la carpeta será diferente en cada proyecto. Las rutas serán las mismas, pero el nombre del archivo lo cambiamos de Master XXXX-M-XXX CLIENTE-OBRA1 a el que corresponda por proyecto y lo mismo pasa con la carpeta que pasará a llamarse de "MODELO) a el nombre del proyecto que le corresponda y que encontraremos, respectivamente, en las celdas C4 para el archivo y C3 para la carpeta.

Se que es un poco complicado y no estoy seguro que se pueda hacer, Pero agradecería vuestra enorme experiencia para intentar conseguirlo.

Muchas gracias por la ayudo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

COPIAR UNA CARPETA, PEGARLA EN OTRA CARPETA Y CAMBIAR EL NOMBRE

Publicado por Antoni Masana (2478 intervenciones) el 27/11/2018 13:20:04
Te pongo un pupurri de cosas, úsalas como mejor te funcione o necesites.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Renombra()
    Dir_Orig = "P:\Pedidos\PED_2018\MODELO"
    Dir_Dest = "P:\Pedidos\PED_2018\Proyecto 2018"
 
    Arch_Orig = "Documeto.EXT"
    Arch_Dest = Sheets("COD ADMIN").Range("C4") & ".EXT"
 
    ' ---&--- Crear un DIRECTORIO solo si no existe
    If Dir(Dir_Dest, vbDirectory) = "" Then Dir_Dest
 
    ' ---&---- Esta opcion MUEVE el archivo origen al destino y cambia el nombre
    Name Dir_Orig & "/" & Arch_Orig As Dir_Dest & "/" & Arch_Dest
 
    ' ---&---- Esta opcion COPY el archivo origen al destino y cambia el nombre
    FileCopy Dir_Orig & "/" & Arch_Orig, Dir_Dest & "/" & Arch_Dest
End Sub

Si tienes problemas enviamelo y te ayudo.


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 44
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

COPIAR UNA CARPETA, PEGARLA EN OTRA CARPETA Y CAMBIAR EL NOMBRE

Publicado por santi (24 intervenciones) el 29/11/2018 15:01:01
Hola,

No consigo que me funcione.

Yo tengo ahora esta macro que me funciona:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub crearcarpeta2()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
 Ruta = "C:\Users\SantiQuirante\Desktop"
 arch = Range("C3")
If Dir(Ruta & "\" & arch, vbDirectory) = "" Then
   MkDir Ruta & "\" & arch
ActiveWorkbook.SaveAs Filename:=Ruta & "\" & arch & "\" & Range("C4")
End If
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
ActiveSheet.DisplayPageBreaks = True
Application.CutCopyMode = False
End Sub

Con esta macro me crea la carpeta con el nombre correcto y le guarda el archivo dentro. Hasta ahí, perfecto. Solo me falta conseguir que coja de la carpeta MODELO en la ruta "P:\Pedidos\PED_2018\MODELO" las carpetas que hay dentro y las copie en la que acabo de crear. Con esto hará todo lo que necesito.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

COPIAR UNA CARPETA, PEGARLA EN OTRA CARPETA Y CAMBIAR EL NOMBRE

Publicado por Antoni Masana (2478 intervenciones) el 30/11/2018 07:08:48
Haber si esto es lo que necesitas. Resalto en NEGRITA los cambios realizados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub crearcarpeta2()
    Dim Dir_Orig As String, _
        Dri_Dest As String, File As String
        
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
 
    Dir_Dest = "C:\Users\SantiQuirante\Desktop" & "\" & Range("C3")
    Dir_Orig = "P:\Pedidos\PED_2018\MODELO"
 
    If Dir(Dir_Dest, vbDirectory) = "" Then
        MkDir Dir_Dest
        ActiveWorkbook.SaveAs Filename:=Dir_Dest & "\" & Range("C4")
 
        File = Dir(Dir_Orig & "\*.*")
        While File <> ""
            FileCopy Dir_Orig & "\" & File, Dir_Dest & "\" & File
            File = Dir()
        Wend
    End If
 
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    ActiveSheet.DisplayPageBreaks = True
    Application.CutCopyMode = False
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 44
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

COPIAR UNA CARPETA, PEGARLA EN OTRA CARPETA Y CAMBIAR EL NOMBRE

Publicado por santi (24 intervenciones) el 30/11/2018 10:25:58
Buenos días Antoni,

Gracias por la ayuda, pero no funciona. La parte inicial la sigue haciendo bien, pero no me copia las carpetas que hay dentro de la carpeta modelo. Si pongo archivos, copia los archivos, pero no las carpetas.

Por otro lado he descubierto un problema. Cuando hacía las pruebas con la macro siempre lo hado con documentos que había guardado previamente. Pero al probarla con el documento original me da problemas.
El documento original es una plantilla habilitada para macros, que hay que guardarla como libro habilitado para macros. No sé como decirle en la macro que lo guarde como tal.

Muchísimas gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

COPIAR UNA CARPETA, PEGARLA EN OTRA CARPETA Y CAMBIAR EL NOMBRE

Publicado por Antoni Masana (2478 intervenciones) el 01/12/2018 09:55:00
Buenos días,

para saber como hacer algo en VBA en Excel la mejor forma es GRABAR MACRO y hacerlo.

Y la parte de copiar puedes hacerlo de dos formas:

- Usando el código recursivó por para buscar ficheros y carpetas para copiarlos.
- Usar algo que ya lo sabe hacer y es muchisimo más simple:

1
Shell "XCOPY " & Dir_Orig & "\*.*  " & Dir_Dest & " /S /Y >nul 2>&1", VbHiden

No se ahora exactamente toda la sintaxis del SHELL (VBA) y los parámetros del XCOPY (MSDOS). Pero esto es rápido y sencillo.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar