Cerrar archivos desde otro

Hola! He armado estos códigos con la finalidad de que desde un archivo (botón) se cierren otros tres, uno tras otro. Por otro lado, otro código que no permite cerrar cualquiera de los tres directamente. El problema es que solo cierra el primero y no los otros dos. Por favor me pueden ayudar diciéndome que estoy haciendo mal.
Código en el archivo Menu_Modulo
 Private Sub CommandButton4_Click()
Workbooks("Modulo_Inventario.xls").Activate
Application.Run ("Modulo_Inventario.xls!cerrar_Inv")
Workbooks("Modulo_OC.xls").Activate
Application.Run ("Modulo_OC.xls!cerrar_OC")
Workbooks("Modulo_Proyectos.xls").Activate
 Application.Run ("Modulo_Proyectos.xls!cerrar_Proy")
 ThisWorkbook.Activate
Cierre = "SI"
  ActiveWorkbook.Close SaveChanges:=True
Codigo en archivo Modulo_Inventario
Option Explicit
Sub cerrar_Inv()
Cierre = "SI"
  ActiveWorkbook.Close SaveChanges:=True
End Sub
Codigo en archivo Modulo_OC
Option Explicit
Public Cierre As String
Sub cerrar_OC()
Cierre = "SI"
  ActiveWorkbook.Close SaveChanges:=True
End Sub
Codigo en archivo Modulo_Proyectos
Option Explicit
Public Cierre As String
Sub cerrar_Proy()
Cierre = "SI"
  ActiveWorkbook.Close SaveChanges:=True
End Sub
Y en cada uno de los tres archivos anteriores
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Cierre <> "SI" Then
    Cancel = True
    MsgBox "CERRAR DESDE MENU_MODULOS", vbOKOnly + vbInformation, "**OPCION_ INHABILITADA**"
    End If
End Sub
Muchas gracias.

1 respuesta

Respuesta
1
Lo único que veo es que en el Modulo_OC no tienes declarada la variable Cierre como pública.
Probablemente eso hace que cuando se cierre ese archivo, en Workbook_BeforeClose la variable Cierre no valga "SI" y se comporte de distinta forma al resto.
No sé si eso te servirá.
Hola Angel,
Ya incluí en el modulo_OC la variable Cierre y tampoco funciona, solo cierra el primer archivo. ¿Con Call no se puede llamar a otra macro desde otro libro?
Gracias y saludos.
Disculpa por el retraso.
He estado bastante liado y tu problema también me ha traído de cabeza porque tienes toda la razón: la macro se interrumpe y se para sin cerrar los otros ficheros...
No obstante, creo que puedes resolverlo (a mí me ha funcionado en mis pruebas) simplemente incluyendo este control de errores:
Private Sub CommandButton4_Click()
  
  On Error Resume Next
 
   Workbooks("Modulo_Inventario.xls").Activate
   Application.Run ("Modulo_Inventario.xls!cerrar_Inv")
   Workbooks("Modulo_OC.xls").Activate
   Application.Run ("Modulo_OC.xls!cerrar_OC")
   Workbooks("Modulo_Proyectos.xls").Activate
   Application.Run ("Modulo_Proyectos.xls!cerrar_Proy")
   ThisWorkbook.Activate
   Cierre = "SI"
   ActiveWorkbook.Close SaveChanges:=True

 
End Sub

Mira a ver si tienes suerte y me cuentas.
¿Qué tal fue el tema...?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas