............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Macro para ejecutar cuando se cierra excel

Ver el tema anterior Ver el tema siguiente Ir abajo

Macro para ejecutar cuando se cierra excel

Mensaje por canoasesor el Dom Nov 07, 2010 9:24 pm

Hola.

Necesito un codigo de vb para que se ejecute cuando cierro el archivo actual de excel, es decir cuando se cierra con X la ventana o close o cerrar de excel.

O como inhabilitar esas opciones de X o Cerrar convisualbasiuc y hacer que la persona solo cierre con un boton que yo deseo crear en mi archivo de excel.

Gracias!!!!!!

CESAR CANO

canoasesor

Masculino Cantidad de envíos : 8
Edad : 50
Ciudad - Pais : colombia
Version de Excel : 2007
Fecha de inscripción : 11/08/2009

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por avalencia el Dom Nov 07, 2010 9:57 pm

Pues coloca lo que desees en el evento "BeforeClose" del libro (modulo thisWorkBook - Nombre por defecto)

Saludos

Abraham

avalencia
MS MVP
MS MVP

Masculino Cantidad de envíos : 99
Edad : 39
Ciudad - Pais : Lima - Peru
Version de Excel : 2003 - 2007 - 2010
Fecha de inscripción : 28/06/2009

http://abrahamexcel.webcindario.com/

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por moises melgar el Lun Nov 08, 2010 1:38 pm

Para inhabilitar el boton [x] dentro del ThisWorkbook coloca este codigo

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim mensaje As String
mensaje = MsgBox("tu mensaje ",vbExclamation, "titulo del mensaje")
Cancel = True
End Sub

y dentro del boton o lo que necesites para cerrar (claro al final de tu codigo) puedes introducir:

rem guarda el libro y luego lo cierra
Application.EnableEvents = False
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.EnableEvents = True

o puedes colocar:
rem cierra sin guarda cambios
ActiveWorkbook.Close SaveChanges:=False
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por avalencia el Lun Nov 08, 2010 1:53 pm

Hola Moises, si colocas eso en el evento BeforeClose del libro, no existira forma de cerrarlo

Abraham

_________________
Microsoft MVP 2010

avalencia
MS MVP
MS MVP

Masculino Cantidad de envíos : 99
Edad : 39
Ciudad - Pais : Lima - Peru
Version de Excel : 2003 - 2007 - 2010
Fecha de inscripción : 28/06/2009

http://abrahamexcel.webcindario.com/

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por moises melgar el Lun Nov 08, 2010 2:07 pm

Imagine usar un boton creado por el usuario para eso
Crei que esa era la otra opcion que queria inhabilitar el boton de cerrar y luego al presionar un boton "cerrar" se ejecute el codigo (el que se quiere que se ejecute antes de cerrar el libro) y hasta el final colocar el ActiveWorkbook.Close

canoasesor escribió:
......
O como inhabilitar esas opciones de X o Cerrar convisualbasiuc y hacer que la persona solo cierre con un boton que yo deseo crear en mi archivo de excel.
CESAR CANO
Pero en si no se cual es el objetivo y me podria estar desviando..


Última edición por moises melgar el Lun Nov 08, 2010 2:10 pm, editado 2 veces
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por avalencia el Lun Nov 08, 2010 2:10 pm

Si, esta bien, pero colocando eso en el evento BeforeClose, ni con codigo a traves de otro boton se pdora cerrar

Abraham

_________________
Microsoft MVP 2010

avalencia
MS MVP
MS MVP

Masculino Cantidad de envíos : 99
Edad : 39
Ciudad - Pais : Lima - Peru
Version de Excel : 2003 - 2007 - 2010
Fecha de inscripción : 28/06/2009

http://abrahamexcel.webcindario.com/

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por moises melgar el Lun Nov 08, 2010 2:19 pm

No se por que seria pero a mi si me ha funcionado en mis libros ( o puede ocasionar algun dañoo irregularidad????)
envio un libro con el codigo que uso donde inhabilite el boton salir y sale con un boton



gracias avalencia
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por avalencia el Lun Nov 08, 2010 2:21 pm

Moises, no me hagas caso, no vi el "Enableevents" antes... Saludos

Abraham

_________________
Microsoft MVP 2010

avalencia
MS MVP
MS MVP

Masculino Cantidad de envíos : 99
Edad : 39
Ciudad - Pais : Lima - Peru
Version de Excel : 2003 - 2007 - 2010
Fecha de inscripción : 28/06/2009

http://abrahamexcel.webcindario.com/

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por moises melgar el Lun Nov 08, 2010 2:22 pm

gracias avalencia ya me estaba preocupando por que solo conosco superficialmente los codigos y en ocasiones desconosco si pueda existir algun otro efecto
Pd: nunca recomiendo un codigo sin antes probarlo
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por albersil el Jue Oct 13, 2011 12:13 pm

moises melgar escribió:gracias avalencia ya me estaba preocupando por que solo conosco superficialmente los codigos y en ocasiones desconosco si pueda existir algun otro efecto
Pd: nunca recomiendo un codigo sin antes probarlo

Si funciona, pero tiene un pequeño fallo, si excel está abierto antes de abrir el libro que contiene la macro, no funciona y no deshabilita la X. Para que funcione tienes que cerrar todo excel y entonces funcionará después de abrir el libro donde está la macro. Al menos eso es lo que a mi me pasa. Si alguien sabe otro método para que funcione independientemente de si hay o no abierto otro libro que sea tan amable de exponerlo. Salu2. y Gracias.

albersil

Cantidad de envíos : 32
Fecha de inscripción : 30/01/2009

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por moises melgar el Jue Oct 13, 2011 4:02 pm

Tenias razon ya casi ha pasado un año desde que envie ese archivo ahora lo envio corregido, gracias a Este foro he aprendido mucho, si me lo hubieras preguntado hace un año no sabria como corregirlo..jajaja las cosas cambian

Gracias por mencionar el error

avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Consulta filtro por medio de Combox

Mensaje por Jose BN el Lun Dic 12, 2011 10:06 am

Hola! Mosise quisiera solicitar tu ayuda con una necesitad que necesito resolver, actualmente tengo un form en donde almaceno una info. A una hoja llamada “BD” la información que se almacena en esta son fecha, lote, cantidad y almacén , quisiera consultar si es posible que otra hoja(llámese “Hoja2”) por medio de 2 combox se realice un filtro a los datos contenidos en la hoja BD, en lo cual el primer combox el usuario definiría la fecha de inicio y el segundo combox el rango de fecha final( eje: del 01/12/2011 al 12/12/2011), una vez filtrado el rango de fecha se copien los valores una hoja 2.


Agradezco si esta en tus conocimientos me puedas ayudar.

link del file: [Tienes que estar registrado y conectado para ver este vínculo]


Saludes,

Jose
avatar
Jose BN

Masculino Cantidad de envíos : 57
Edad : 37
Ciudad - Pais : Costa Rica-San Jose
Version de Excel : 2003, Vista, 2007
Fecha de inscripción : 16/05/2011

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por moises melgar el Lun Dic 12, 2011 5:16 pm

el link no me arroja nada
pero adjunto ejemplo:



Código:
Private Sub UserForm_Initialize() ' al iniciar el form
For x = 4 To Hoja1.Range("A" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem Hoja1.Range("A" & x).Value
ComboBox2.AddItem Hoja1.Range("A" & x).Value
ComboBox1.ListIndex = 0
ComboBox2.ListIndex = 0
Next x
End Sub

Private Sub CommandButton1_Click() ' boton Traspasar
Application.ScreenUpdating = False
If ComboBox2.Value = "" Or ComboBox1.Value = "" Then
MsgBox "datos incompletos"
Else:
   
    If DateValue(ComboBox1.Value) > DateValue(ComboBox2.Value) Then
    MsgBox "La fecha inicial debe ser menor o igual a la final"
    Else:
    Hoja2.Range("A4:D" & Hoja2.Range("A" & Rows.Count).End(xlUp).Row + 1).ClearContents
    Hoja2.Range("G3").Value = ComboBox1.Value
    Hoja2.Range("G4").Value = ComboBox2.Value
    For x = 4 To Hoja1.Range("A" & Rows.Count).End(xlUp).Row
      If Hoja1.Range("A" & x).Value >= DateValue(ComboBox1.Value) And Hoja1.Range("A" & x).Value <= DateValue(ComboBox2.Value) Then
        'opcion 1:
        Hoja2.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = Hoja1.Range("A" & x).Value
        Hoja2.Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = Hoja1.Range("B" & x).Value
        Hoja2.Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Value = Hoja1.Range("C" & x).Value
        Hoja2.Range("D" & Rows.Count).End(xlUp).Offset(1, 0).Value = Hoja1.Range("D" & x).Value
        'opcion 2:
        'Hoja1.Range("A" & x & ":" & "D" & x).Copy
        'Hoja2.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues)
        'Application.CutCopyMode = False
      End If
    Next x
    Hoja2.Columns("A:A").NumberFormat = "m/d/yyyy"
    End If
End If
Hoja2.Activate
Unload Me
End Sub

Resumiendo
al iniciar el form:
Primero uso un bucle para agregarle los datos a los combobox (combino el for...next con el listindex), luego

boton traspasar:
Uso otro bucle (for..next) para pasar de celda en celda del rango de la fechas a filtrar (desde la fila 4 hasta el ultimo valor usado del rango) usando como criterio los valores de los combobox (revisar formula FECHANUMERO VBa = Datevalue, ya que los valores de fecha en los TextBox1,combobox, etc se representan como formato texto),los cuales no deben estar vacios ni el combobox2 debe ser mayor al combobox 1.....
Al determinar que cumplen con las condiciones de que no esten vacias....
Se evalua en que filas se encuenran el criterio de mayos o igual a la fecha inicial y menor o igual a la fecha final
y con referencia a esa fila se determinan los valores de las ultimas celdas vacias de la hoja datos seleccionados
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por Jose BN el Mar Dic 13, 2011 10:04 am

Me queda una pregunta, los combox son utilizados para determianr el rango de fecha que se desea filtrar, osea desde 01/12/2011(combobox1) al 13/12/2011(combobox2) este filtro lo aplico en la hoja directamente llamada "hoja2" y no desde un form, la pregunta es aplicable el codigo que me compartes?

La necesidad a esto suge que necesito extraer los valores almacenados en la hoja2, para actualizar la info. de un grafico, la extraciòn de los datos debe hacerse por rango de fecha y esta la determina el usuario, espero haberme explicado de forma que se clara la consulta.

[Tienes que estar registrado y conectado para ver este vínculo]

el link espero funcione, para que te pueda dar una idea mas clara de mi necesidad.

Agradezco tus comentarios.

Saludes
avatar
Jose BN

Masculino Cantidad de envíos : 57
Edad : 37
Ciudad - Pais : Costa Rica-San Jose
Version de Excel : 2003, Vista, 2007
Fecha de inscripción : 16/05/2011

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por moises melgar el Mar Dic 13, 2011 5:28 pm

si es aplicable, solo es cuestion de adaptar el codigo al libro
recuerda que existen codigos para la hojas como Private Sub Worksheet_Activate() o el Private Sub Worksheet_Change,(ejecuta cuando se activa el libro y el otro cuando se recalcula[ diferentes al ocasionado por formulas]) ya dependera de como quieres que se realize el codigo
ya que para cargar datos al combobox se usa el AddItem ejemplo hoja1.combobox1.AddItem "hola" , muy simple ..........solo cambiaria la parte del momento en que se cargaran a los combobox y el boton el cual realiza la funcion de filtrado

Repito..........

Son dos codigos
1. carga los datos a los combobox el contenido dentro del codigo Private Sub UserForm_Initialize y
2. realiza el proceso de Seleccion de los valores para almacenarlos en la otra hoja dentro del codigo del boton Private Sub CommandButton1_Click
Ambos dentro del codigo del Userform

Realiza tu mismo las adaptaciones y si te encuentras con dificultades menciona el detalle

Ahora que si el archivo es de alguien mas (ya que esta protegido el proyecto de VBA) usa el sig tema para quitarle esa contraseña:

[Tienes que estar registrado y conectado para ver este vínculo]

Es fiable yo mismo la usado varias veces hasta en el archivo que me genera el SIPRED
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por Jose BN el Mar Dic 13, 2011 11:57 pm

Mosises, gracias por tus comentarios, voy a realizar el intento para finalizar mi trabajo, el archivo es de mi autoria solo que olvide que lo habia protegido, pero ya que mencionas la parte para desproteger VBA publicada en el blog no logre avanzar de esta parte:

Se abrirá la ventana con menú del sistema.
Paso 3:
Desde esa venta selecciona tu archivo y lo abres. Nota importante: haz una copia del archivo original para mayor seguridad.
Paso 4:
En el menú BUSCAR, busca el texto "DPB", asegúrate que existe inmediatamente atrás de las letras "GC=" y [Host Extender Info]
Paso 5:
Al texto "DPB" cámbialo por la siguiente escritura: "DBx"
Paso 6:
Selecciona Guardar y guarda el archivo el Archivo
Paso 7:
Ahora abre el archivo en Excel recibirás un mensaje de error, ignóralo y selecciona Si (Yes) o Aceptar
En este paso aun no podrás acceder al proyecto VBA

Te agradeceria me puedas guiar, ya que no comprendo donde encontrar la parte de los textos mencionadas, si no fuera mucho pedir.
avatar
Jose BN

Masculino Cantidad de envíos : 57
Edad : 37
Ciudad - Pais : Costa Rica-San Jose
Version de Excel : 2003, Vista, 2007
Fecha de inscripción : 16/05/2011

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por moises melgar el Miér Dic 14, 2011 4:16 pm

Lo checare en mi casa, para ver si le quito la contraseña a tu archivo

dado el caso en que no puedo te aviso y listo,

en el caso que por x o y motivo no lo tenga, eso no implica la imposibilidad de que el achivo ejecute macros, ya que se puede alterar la informacion de un libro de excel a traves de otro
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por Jose BN el Miér Dic 14, 2011 11:16 pm

Gracias! de todas formas adjunto el archivo sin pass:
[Tienes que estar registrado y conectado para ver este vínculo]
Por otra parte no logre ejecutar el codigo que facilitado.

en la hoja "Compa Promedio" he colocado los dos combobox1(fecha inicio) y combobox2 (fecha fin)es en esta hoja donde se define el rango de fecha a filtrar de los valores que se encuentran almacenados en la hoja 2, el rango de filtro para ambos combobox es la columna"A" de la hoja 2, la parte de trasladar los valores filtros es mas que clara, pero no consigo realizar el filtro de la fechas definidas por los combobox para la columna "A" de la hoja 2.

Lo que estoy tratando de realizar es alimentar una BD que me permita actualizar el grafico de la hoja"Compa Promedio" sin tener recurrir a estar creando un grafico cada vez que necesite evaluar un comportamiento, ya que al contar con una BD la info. pueda ser consultar el historico de forma inmediata, comprendo que se pueden sugerir formas mas sencillas para lograr el filtro, pero me gustaria ver realmente como lograr realizarlo mediante el uso de los combobox.

Realmente te agradezco la ayuda que me puedas brindar para resolver mi problema.

Gracias!
avatar
Jose BN

Masculino Cantidad de envíos : 57
Edad : 37
Ciudad - Pais : Costa Rica-San Jose
Version de Excel : 2003, Vista, 2007
Fecha de inscripción : 16/05/2011

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por moises melgar el Jue Dic 15, 2011 7:20 pm

En este momento ando en una empresa, ya has intentado usar el codigo segun te mencione?????,
Create una copia del libro e intenta usar el codigo...
no pieredes nada en intertarlo
pero si quieres que yo lo adapte tendras que esperar ya que como es fin de año ando pasando por la empresas para poder checar los impuestos de noviembre y planear el cieere de 2011
Es mas facil para mi resolver tus dudas que elaborar los archivos
Nota: no soy el unico que sabe de Excel aca hay mas personas que aun pueden responder y saben mucho mas que yo.

El que persevera alcanza

avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Macro para ejecutar cuando se cierra excel

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.