Ayuda con Macro al maximizar ventana

Tengo un codigo en Visual Basic (Application.DisplayFullScreen = True) q se ejecuta al abrir el libro de Excel para q el mismo aparezca en modo pantalla completa pero el problema es que cuando minimizo la aplicacion desde la barra de windows (la de abajo donde aparecen los programas abiertos), al volver a maximizarla no aparece en pantalla completa (se muestra como si estaria maximizada, o sea q no me reconoce la macro). Me gustaria q me den una solucion para q al hacer click en Excel y se ejecute como en pantalla completa sin mostrar los menus (inicio, insertar,diseño de pagina, etc). O sea que lo que quisiera es que simpre se muestre ese archivo a pantalla completa
Estoy trabajando en Excel 2007.
Respuesta
1
Tengo una aplicación con ese mismo problema, al parecer no hay ningún evento de excel que controle eso, buscando por internet he encontrado el siguiente código:
Code:
'Module Code
Public RunWhen As Double
Public Const cRunWhat = "AppTimer"
Public Const cRunIntervalSeconds = 1
Sub AppTimer()
If Application.WindowState = xlMinimized Then
StartTimer
Else
Application.DisplayFullScreen = True
ActiveWindow.WindowState = xlMaximized
End If
End Sub
Sub StartTimer()
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, schedule:=True
End Sub
Sub StopTimer()
On Error Resume Next 'Prevent error when time not set
Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, schedule:=False
End SubCode:
'Workbook code
Private Sub Workbook_BeforeClose(Cancel As Boolean)
StopTimer
DoEvents 'Maybe not needed?
Application.Quit 'Be careful with this because you may lose changes
End Sub
Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub
Private Sub Workbook_WindowResize(ByVal Wn As Excel.Window)
If Wn.WindowState = xlMinimized Then
Application.WindowState = xlMinimized
StartTimer
Else
Application.DisplayFullScreen = True
Wn.WindowState = xlMaximized
StopTimer
End If
End Sub
Como puedes ver, lo primero es un modulo y lo demás partes de código que hay que poner en distintas partes, todavía no lo he probado, pero por lo que he leído en la página, funciona bien.
La página es en ingles y es esta:
http://www.xtremevbtalk.com/showthread.php?t=279496
Si utilizas el código antes que yo, hazme saber que tal te funciona.
Hola desde ya muchas gracias por tu tiempo, pero no eh podido solucionar el problema. Seguramente funciona pero quizás yo lo estoy haciendo mal porque no se mucho de eso. Si tu llegaras a encontrar la solución para hacerlo funcionar, te agradecería que me guíes la manera de hacerlo. Puse una parte en un modulo y la otra en this workbook. Al minimizar la ventana y maximizarla sigue teniendo el mismo problema.
Muchas gracias nuevamente y espero se pueda solucionar.
Saludos
No hay problema, dame un par de días para que lo implemente en mi programa y ya te digo más claramente donde va cada cosa.
Pues no funcionaba bien, porque solo funcionaba si antes cambiabas el tamaño de la ventana, pero la de la hoja, no de el libro excel (la ventana principal), la he modificado y ahora funciona, aunque creo que la forma más correcta seria controlar un API de windows para saber el estado de la ventana activa, aunque como nunca he usado apis no tengo ni idea de como seria.
Saludos.
Código para poner en un modulo:
Sub AppTimer()
dTime = Now + TimeValue("00:00:01")
Application.OnTime dTime, "AppTimer"
If Not Application.WindowState = xlMinimized Then
Application.ActiveWindow.WindowState = xlMaximized
Application.DisplayFullScreen = True
End If
End Sub
CODIGO PARA PONER EN "Thisworkbook"
Public dTime As Date
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime dTime, "AppTimer", False
End Sub
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:00:01"), "AppTimer"
End Sub
 Este codigo comprueba cada segundo el estado de la ventana, y la pone a fullscreen sino es su estado, aunque he añadido el If not application.windowstate = xlminimized, no es necesario, ya que parece que al minimizar la ventana principal el reloj se detiene y no se realiza la comprobacion.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas