none
MACRO PARA GUARDAR EL LIBRO EN VARIAS CARPETAS RRS feed

  • 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

    viernes, 8 de febrero de 2019 14:46

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


    sábado, 9 de febrero de 2019 3:03
  • 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
    lunes, 11 de febrero de 2019 21:13

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


    sábado, 9 de febrero de 2019 3:03
  • Muchísimas gracias, una pregunta, hay alguna forma que te reemplace el libro directamente, sin estar preguntando si desea reemplazarlo?
    lunes, 11 de febrero de 2019 19:14
  • 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
    lunes, 11 de febrero de 2019 21:13
  • Genio...!!!, mil gracias
    lunes, 11 de febrero de 2019 21:47
  • una ultima pregunta. Cuando esta guardando, en la barra de abajo dice "Guardando archivo temporal" esto no quiere decir que solo se guardara temporalmente cierto?
    lunes, 11 de febrero de 2019 21:50
  • Es solo un mensaje de Excel, no tiene que ver con el código y/o significa que los archivos sean "temporales".

    Abraham Valencia

    lunes, 11 de febrero de 2019 23:09
  • 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...!!!

    martes, 12 de febrero de 2019 13:13
  • Pregunta ¿son  archivos que se guardan en red y a  los que acceden distintos usuarios/as? ¿o solo son archivo en una sola PC que trabajas de forma diferenciada?

    Abraham Valencia

    martes, 12 de febrero de 2019 14:34
  • En una sola PC, no esta en ninguna red

    martes, 12 de febrero de 2019 15:32
  • Si todo está en una misma PC, no entiendo el sentido de tener el mismo archivo en distintas carpetas y abrirlos, indistintamente, para modificarlo y que se guarde otra vez el mismo en dichas mismas carpetas.

    Abraham Valencia

    miércoles, 13 de febrero de 2019 0:18
  • 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

    miércoles, 13 de febrero de 2019 12:51