¿Cómo guardar un archivo en excel mediante macros, con sus módulos incluidos?

Estoy utilizando un código para guardar un archivo en una ruta determinada, lo guarda sin problemas, pero al momento de abrir ese archivo los módulos no existe, por ende no se puede utilizar la macros.

Application.ScreenUpdating = False
ambito = Cells(10, 16).Value
fecha = Cells(2, 12).Value
If a = "Ambulatorio" Then
ruta = "\\armazones\Disco_Compartido\Proyectos Optimizacion y Estrategicos\Reportes\Ambulatorio\"
Sheets("Consolidado").Visible = True
Sheets("APN").Visible = True
Sheets("AJUSTES").Visible = True
Sheets("DESARROLLO").Visible = True
Sheets(Array("Portada", "KANBAN", "Reporte", "ESTADOS", "AJUSTES", "APN", "Consolidado", "Desarrollo")).Select
Sheets("Portada").Activate
' ActiveSheet.DropDowns.Add(229.5, 30, 91.5, 30).Select
Sheets(Array("Portada", "KANBAN", "Reporte", "ESTADOS", "AJUSTES", "APN", "Consolidado", "Desarrollo")).Copy
ActiveWorkbook.SaveAs Filename:= _
ruta + "Reporte del ambito " + ambito + "_" + fecha + ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWindow.Close
Sheets("Consolidado").Visible = False
Sheets("APN").Visible = False
Sheets("AJUSTES").Visible = False
Sheets("DESARROLLO").Visible = False
Sheets("Portada").Select
Range("A1").Select
MsgBox "Reporte " + ambito + " Creado", , "Isapre Consalud"

Algunas hojas deben ir ocultas

2 Respuestas

Respuesta
1

La instrucción de guardado con macros está correcta.

Si una de las hojas de la matriz se encuentra oculta te dará error al intentar seleccionarla. Esa línea de todos modos no es necesaria (son las que aparecen desactivadas en mi macro de ejemplo).

La fecha debe estar en un formato apto para nombres de libros. Las barras no se soportan sino que debes utilizar guión (20-02-2018)

El siguiente código está adaptado de tu ejemplo y corre perfectamente (en mi versión):

Sub Macro1()
'
' Macro1 Macro
fecha = Cells(3, 2)
ambito = Cells(2, 4)
ruta = ThisWorkbook.Path & "\"
    'Sheets(Array("Ventas", "Caja", "Datos")).Select
    'Sheets("Hoja1").Activate
Sheets(Array("Ventas", "Caja", "Datos")).Copy
ActiveWorkbook.SaveAs Filename:= _
ruta + "Reporte del ambito " & ambito & "_" & fecha & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
'
    Range("A6").Select
End Sub

Si el libro se genera sin error y no se ejecutan las macros debes revisar entre las Opciones de Excel, Centro de confianza si en la configuración de Macros se encuentra tildada la opción Deshabilitar macros con notificación.

Mi macros lo que hace es seleccionar ocultar y guardar, eso lo hace perfecto, ya que deben ir si o si todas las hojas, pero algunas ocultas, al momento de generar la macros, el libro se guarda en la ruta deseada, pero sin los módulos de la macros.

Si las macros están en módulos no se guardan en el libro que estás creando solo como coia de hojas.

Para llevarte las macros del libro (las ubicadas en módulos) tendrás que hacer copia del libro completo (Savecopyas) y luego activas ese libro y elimina las hojas que no deben ir.

Usa la grabadora para generar llegar as instrucciones. Si necesitas ayuda con el código avísame.

Sdos!

Qué pena... parece que te mareaste con las 2 respuestas y no apreciaste que ambas estaban correctas según la poca información con la que se contaba al momento de responder.

Disculpa no había visto la evaluación, al final lo logré hacer cambiando solo una línea de código. 

Saludos y gracias por el tiempo 

Respuesta
1

Por lo que veo, estás guardando solo algunas hojas del libro, entonces, en ese nuevo archivo se copian las hojas correspondientes y sus módulos. Si en dichos módulos hay macros (eventos y rutinas o similares) también se copiarán.

Con el método que estás usando los módulos "standard" no se guardan con el nuevo archivo, por si acaso. Quizá eso es lo que está ocurriendo.

Abraham Valencia

como puede generar el código para que me guarde todo, con los módulos incluidos.

Saludos

En mi macros selecciono todas las hojas del archivo.

Si vas a copiar todo el archivo, no es necesario crear un array con los nombres de las hojas, eso es cuando quieres crear un libro con solo algunas hojas (obviamente en el array van solo esa hojas).

En tu caso sugiero usar lo siguiente:

ActiveWorkbook.SaveCopyAs Filename:="D:\MINuevoLibro.xlsm"

Eso te generará una copia de tu libro, incluyendo módulos "standard". Solo coloca la ruta y nombre que desees. Ah, por cierto, elimina antes esas líneas del Array, si no lo haces el archivo se guardará con errores.

Salu2

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas