Ejecutar macros de acuerdo a condición excel

buenas

tengo un archivo en excel llamado ("inicio") que cuando lo abro me sale un formulario con 2 botones los cuales puedo cargar o no un segundo libro ("base de datos").....

le desgloso lo de arriba:

archivo principal=inicio.xls

libro secundario = base de datos.xls

abro el archivo inicio.xls y me sale un formulario con 2 botones

aceptar y cancelar

si acepto carga el libro base de datos.xls y lo uso "en este momento tengo abierto inicio.xls y base de datos.xls

en el archivo inicio.xls tengo un botón salir....

lo que necesito es que al tener abierto inicio.xls y base de datos.xls y use el botón salir

me salve los dos archivos y cierre excel

en caso tal de abrir el archivo inicio.xls y no cargue base de datos al usar el botón salir

cierre y guarde el libro inicio.xls.

Saludos.

1 respuesta

Respuesta
1

Pon lo siguiente en tu botón salir

Sub salir()
'por.dam
Application.DisplayAlerts = False
Workbooks("base de datos.xls").Save
Workbooks("inicio.xls").Save
Workbooks("base de datos.xls").Close
Workbooks("inicio.xls").Close
End Sub

Prueba y me comentas

Saludos. Dam
Si es lo que necesitas.

me funciona............pero es parte de lo que necesito

estaba pensando algo con la sentencia if.....te explico

si tengo abierta los libros: inicio.xls y base de datos.xls y voy a salir de excel

por medio de un botón, me salve y guarde los 2 libros abierto " inicio.xls y base de datos.xls"

y salga de excel....

y en caso tal de solo tener abierto el libro inicio.xls, simplemente salve y cierre el libro activo...

estuve trabajando en algo pero no me funciono.....disculpa x mi ignorancia en este caso

dado que estoy aprendiendo de mis errores.

Sub Botón1_Haga_clic_en()
Dim archi As String
Dim archivo1 As String
archi = "1-cuadro de controles"
archivo1 = "2-base de datos consumo"
If (archi.Visible) = True Then "este es el punto critico que no se como indicarle que el

archi y archivo1 están abiertos"
ActiveWorkbook.Save "en caso de que están abiertos los 2 libros salva y cierra excel"
ActiveWorkbook.Close
Else
ActiveWorkbook.Sabe "y si no esta abierta archivo1 entonces salva el libro abierto"
Application.Quit
End If
End Sub

Gracias y saludos.......

Entonces pon lo siguiente

Sub salir()
'por.dam
Application.DisplayAlerts = False
On Error Resume Next
Workbooks("base de datos.xls").Save
Workbooks("inicio.xls").Save
Workbooks("base de datos.xls").Close
Workbooks("inicio.xls").Close
End Sub

Con esta instrucción

On Error Resume Next

SI el archivo está abierto lo guarda y lo cierra, si el archivo no está abierto se pasa al siguiente archivo.

No es necesario que pongas un if.

Para preguntar si está abierto o no un archivo, tienes que poner : On Error Resume Next

Después tienes que seleccionar el libro, Workbooks("inicio.xls").Activate, esto te regresa un número de error, si el error es 0, entonces el libro está activo, si el error es diferente de 0 entonces el libro no está abierto, por ejemplo:

Sub salir()
'por.dam
Application.DisplayAlerts = False
On Error Resume Next
Err.Number = 0
Workbooks("inicio.xls").Activate
If Err.Number = 0 Then
    Workbooks("inicio.xls").Save
    Workbooks("inicio.xls").Close
End If
Err.Number = 0
Workbooks("base de datos.xls").Activate
If Err.Number = 0 Then
    Workbooks("base de datos.xls").Save
    Workbooks("base de datos.xls").Close
End If
End Sub

Para el objetivo de guardar y cerrar el libro, las 2 macros hacen lo mismo.

Saludos. DAM

Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas