Principales respuestas
MACRO PARA GUARDAR EL LIBRO EN VARIAS CARPETAS

Pregunta
-
Buenos días:
Tengo la siguiente situación:
Tengo un formato en un libro excel, este formato tiene macros, el nombre de este libro supongamos que es "Formato de trabajo1.xlsm", la ubicación de este archivo supongamos que esta dentro de la unidad D:, en una carpeta llamada "Sucursal1" y dentro de dicha carpeta otra carpeta "Formatos" D:\Sucursal1\Formatos
Tengo una carpeta "Despachos" dentro de la carpeta "Sucursal1" de la unidad D:, y dentro de la carpeta "Despachos" tengo otra carpeta llamada "Clientes" "D:\Sucursal1\Despachos\Clientes"
El objeto es, que al momento de realizar modificaciones en el libro "Formato de trabajo1.xlsm" y guardarla, no solamente guardar los cambios realizados dentro de la unidad que se encuentra el libro "Formato de trabajo1.xlsm" que seria "D:\Sucursal1\Formatos" como generalmente hace, si no también guardarlo dentro de todas las sub carpetas dentro de todas las carpeta "Clientes" (Suponiendo que cada cliente tiene una carpeta), reemplazando el archivo existentes con el mismo nombre.
Es esto posible? espero que me hubiera explicado bien, alguna ayuda porfavor
Respuestas
-
Hola
Si quieres que el efecto se dé cada vez que guardar el libro, debes usar el evento "BeforeSave" del libro. Pega esto en el módulo del libro (que por defecto lleva por nombre "ThisWorkBook"):
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim fs As Object, f As Object, sf As Object, f1 As Object Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder("D:\Sucursal1\Despachos\Clientes") Set sf = f.SubFolders For Each f1 In sf ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\" & f1.Name & "\" & ActiveWorkbook.Name Next f1 End Sub
De ese modo se guarda una copia identica en cada sub carpeta de la carpeta Clientes. Solo modifica por la ruta necesaria. Comentas.
Abraham Valencia
- Editado Abraham Valencia sábado, 9 de febrero de 2019 3:03
- Marcado como respuesta Brayan_Angel lunes, 11 de febrero de 2019 21:47
-
Hola
El código tal cual te lo he puesto no debería preguntarte pero, quizá hiciste algún cambio que no comentas; en todo caso prueba colocando al inicio:
Application.DisplayAlerts = False
Y al final:
Application.DisplayAlerts = True
Saludos
Abraham Valencia
- Marcado como respuesta Brayan_Angel lunes, 11 de febrero de 2019 21:47
Todas las respuestas
-
Hola
Si quieres que el efecto se dé cada vez que guardar el libro, debes usar el evento "BeforeSave" del libro. Pega esto en el módulo del libro (que por defecto lleva por nombre "ThisWorkBook"):
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim fs As Object, f As Object, sf As Object, f1 As Object Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder("D:\Sucursal1\Despachos\Clientes") Set sf = f.SubFolders For Each f1 In sf ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\" & f1.Name & "\" & ActiveWorkbook.Name Next f1 End Sub
De ese modo se guarda una copia identica en cada sub carpeta de la carpeta Clientes. Solo modifica por la ruta necesaria. Comentas.
Abraham Valencia
- Editado Abraham Valencia sábado, 9 de febrero de 2019 3:03
- Marcado como respuesta Brayan_Angel lunes, 11 de febrero de 2019 21:47
-
-
Hola
El código tal cual te lo he puesto no debería preguntarte pero, quizá hiciste algún cambio que no comentas; en todo caso prueba colocando al inicio:
Application.DisplayAlerts = False
Y al final:
Application.DisplayAlerts = True
Saludos
Abraham Valencia
- Marcado como respuesta Brayan_Angel lunes, 11 de febrero de 2019 21:47
-
-
-
-
Muchas gracias por la ayuda, de verdad.
Ahora me surge otro problema.
Cuando quiero trabajar en el libro que se copio en la carpeta de los cliente, al momento de guardarlo, obviamente, quiere hacer lo mismo, guardar en todas las demás carpeta el archivo con el que estoy trabajando.
Hay alguna manera que al momento de guardarlo desde el excel formato, se elimine solamente esta macro para las demás copias?
Y disculpa tantas preguntas. MIL GRACIAS...!!!
-
-
-
-
Pasa que manejamos varios clientes, y todos los dias se hacen tramiten para varios de ellos.
El formato que tengo, es un formato para trabajar sobre ese documento, dicho formato, se va actualizando de acuerdo a las normativas y algunas celdas con formulas que permiten automatizar el trabajo.
Al tener una copia en cada carpeta del cliente, me facilita que simplemente yendo a dicha carpeta comenzar a trabajar, y no estar yendo al formato copiarlo, ir a la carpeta del cliente y pegarlo, son varios clientes, yo solo quiero entrar a la carpeta del cliente y comenzar a trabajar sin preocuparme si esta o no actualizado