ayuda para una macro

15/08/2005 - 07:05 por Diana | Informe spam
Hola a todos!
Tengo terminada una aplicación. Lo único que me falta es una macro que
determine si el usuario de la aplicación tiene otros libros abiertos de
excel.
Si tiene otros libros abiertos, mi aplicación terminaría con
Activeworkbook.Close
En cambio, si el usuario no tiene otros libros abiertos, mi aplicación
terminará con Application.Quit
A alguien se le ocurre cómo escribir esta macro????
Gracias

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
15/08/2005 - 08:12 | Informe spam
hola, Diana !

... En esta aplicacion...
ActiveWorkbook.Protect Windows:=True
Application.DisplayFullScreen = True
... usar mi menu personalizado y anule el menu de control...
Al cerrar el libro, restauro el menu de control...
... funciona muy bien con Application.Quit
... si hay otro libro abierto, y... aplico Activeworkbook.Close
... el libro que quedo abierto queda con pantalla completa
como si no reconociera el codigo Application.DisplayFullScreen = True



[hasta donde se]... cualquier linea de codigo que 'siga despues de...'
-> Application.Quit o... <Workbook>.Close
ya no 'se ejecuta' :-(
op1: 'mueve' las lineas donde restauras 'lo normal'...
a) al evento 'Workbook_BeforeClose' del libro que contiene el codigo
b) al evento 'Workbook_Deactivate' del libro que contiene el codigo
op2: podrias adaptar un codigo 'de alternancia' [por si el usuario esta cambiando de libros en la sesion] ;)
op3: 'manda' la ejecucion del 'Quit' o el 'Close' -> despues de 'restaurar a lo normal'

si cualquier duda... comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#7 KL
15/08/2005 - 08:13 | Informe spam
Hola Diana,

Como vos sabés mucho igual que Héctor, y ya me ayudaste en otra
oportunidades, te pido si la podés leer y ayudarme.



Solo que conste que pienso que de Excel no se ni la decima parte de lo que
sabe HM :-)

Saludos,
KL
Respuesta Responder a este mensaje
#8 KL
15/08/2005 - 08:16 | Informe spam
Un comentario mas: solo cambie el codigo de HM porque pensaba que iba a
meter mas instrucciones entremedio, cosa que al final no hice. Asi que
puedes usar el codigo original de Hector anteponiendole la instruccion
Application.DisplayFullScreen = False

Saludos,
KL



"KL" wrote in message
news:eudgv$
Hola Diana,

En tanto vuelve Hector

En esta aplicación que acabo de terminar llamo al método
ActiveWorkbook.Protect Windows:=True
Application.DisplayFullScreen = True



Hasta donde se, la primera instruccion no deberia hacer ningun efecto
sobre la posibilidad de quitar la vista en pantalla completa.

para que sólo se pueda usar mi menú personalizado y anule el menú de
control de la ventana del libro de trabajo.



Espero que sepas que al hacer clic derecho sobre tu menu personalizado o
alrededor aparece un menu contextual que permita mostrar todos los menus.

Pero si hay otro libro abierto, y con el condicional que me enseñaste,
aplico Activeworkbook.Close , el libro que quedó abierto queda con
pantalla completa, como si no reconociera el código
Application.DisplayFullScreen = True



Aqui debe estar fallando algo en el codigo. Podrias exponer el codigo
completo que lo hace? Mientras tanto prueba esto:

Application.DisplayFullScreen = False
If Workbooks.Count > 1 Then
ActiveWorkbook.Close
Else
Application.Quit
End If

Saludos,
KL

Respuesta Responder a este mensaje
#9 Diana
15/08/2005 - 08:30 | Informe spam
KL:
ActiveWorkbook.Protect Windows:=True Quizás tengas razón. Como así la
aprendí, nunca probé quitarla para ver si igual funcionaba. Es verdad que al
hacer click con el botón derecho del mouse se despliega un menú contextual,
pero como para anularlo hay que usar funciones API y no las manejo bien,
prefiero no usarlas. en realidad lo que más me preocupa es que el usuario no
pueda usar el botón "x" de salida de exel pues en mi macro de cierre tengo
programadas varias instrucciones. Llamando a DisplayFullScreen=True obligo
al usuario a usar mi botón de salida.


Parte de mi código donde llamo a DisplayFullScreen =False es el que sigue.
Esta rutina es llamada desde ThisWorkbook con una Private Sub Workbook_
Before Close

Sub RestablecerEntorno()
Application.ScreenUpdating = False
With mobjEstadoAplicacion
.RestablecerEstado
End With
With Application.CommandBars("Worksheet Menu Bar")
.Reset
End With
ActiveWorkbook.Unprotect
With Application
.DisplayFullScreen = False
.WindowState = xlMaximized
.DisplayFormulaBar = True
.DisplayStatusBar = True
End With
With ActiveWindow
.Caption = ActiveWorkbook.Name
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
.DisplayWorkbookTabs = True
.DisplayHeadings = True
End With
End Sub

"KL" escribió en el mensaje
news:eudgv$
Hola Diana,

En tanto vuelve Hector

En esta aplicación que acabo de terminar llamo al método
ActiveWorkbook.Protect Windows:=True
Application.DisplayFullScreen = True



Hasta donde se, la primera instruccion no deberia hacer ningun efecto
sobre la posibilidad de quitar la vista en pantalla completa.

para que sólo se pueda usar mi menú personalizado y anule el menú de
control de la ventana del libro de trabajo.



Espero que sepas que al hacer clic derecho sobre tu menu personalizado o
alrededor aparece un menu contextual que permita mostrar todos los menus.

Pero si hay otro libro abierto, y con el condicional que me enseñaste,
aplico Activeworkbook.Close , el libro que quedó abierto queda con
pantalla completa, como si no reconociera el código
Application.DisplayFullScreen = True



Aqui debe estar fallando algo en el codigo. Podrias exponer el codigo
completo que lo hace? Mientras tanto prueba esto:

Application.DisplayFullScreen = False
If Workbooks.Count > 1 Then
ActiveWorkbook.Close
Else
Application.Quit
End If

Saludos,
KL

Respuesta Responder a este mensaje
#10 Diana
15/08/2005 - 08:36 | Informe spam
Hector::
Acabo de enviar una respuesta a KL donde explico parte de mi código. Sí, uso
un before close opara ejecutar el código.

"Héctor Miguel" escribió en el mensaje
news:
hola, Diana !

... En esta aplicacion...
ActiveWorkbook.Protect Windows:=True
Application.DisplayFullScreen = True
... usar mi menu personalizado y anule el menu de control...
Al cerrar el libro, restauro el menu de control...
... funciona muy bien con Application.Quit
... si hay otro libro abierto, y... aplico Activeworkbook.Close
... el libro que quedo abierto queda con pantalla completa
como si no reconociera el codigo Application.DisplayFullScreen = True



[hasta donde se]... cualquier linea de codigo que 'siga despues de...'
-> Application.Quit o... <Workbook>.Close
ya no 'se ejecuta' :-(
op1: 'mueve' las lineas donde restauras 'lo normal'...
a) al evento 'Workbook_BeforeClose' del libro que contiene el codigo
b) al evento 'Workbook_Deactivate' del libro que contiene el codigo
op2: podrias adaptar un codigo 'de alternancia' [por si el usuario esta
cambiando de libros en la sesion] ;)
op3: 'manda' la ejecucion del 'Quit' o el 'Close' -> despues de 'restaurar
a lo normal'

si cualquier duda... comentas?
saludos,
hector.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida