Vista preliminar en Formularios

26/10/2005 - 20:52 por FeCel | Informe spam
Tengo el siguiente problema que no se si tiene solución.
En un formulario quisiera agregar un botón que permita visualizar el listado
(Vista preliminar). El problema es que si agrego el comando:
ActiveWindow.SelectedSheets.PrintPreview desde un formulario, el PC queda
bloqueado y no permite salir de la presentación preliminar.
Muchas gracias de antemano.
FeCel

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
26/10/2005 - 22:54 | Informe spam
hola, FeCel !

Tengo el siguiente problema que no se si tiene solucion.
En un formulario quisiera agregar un boton que permita visualizar el listado (Vista preliminar).
El problema es que si agrego el comando: ActiveWindow.SelectedSheets.PrintPreview desde un formulario
el PC queda bloqueado y no permite salir de la presentacion preliminar.



-> el -verdadero- 'problema' es que al mandar la ejecucion de la vista preliminar de impresion [PrintPreview por codigo]...
[se supone que] le estas 'cediendo el control' de la aplicacion ->al usuario<- :)) [entonces]...
a) al mostrar el formulario, asegurate que lo muestras en forma 'no-modal' [p.e. -> UserForm1.Show vbModeLess]
para que el usuario tenga la posibilidad de cancelar [o INCLUSO imprimir] o interactuar en el dialogo del printpreview
b) si la version de excel es menor a 2000, la presentacion de formularios 'no-modales' no tiene soporte 'directo' :-(
seria necesario echar mano de trucos adicionales :))
c) otra alternativa [si no quieres cederle el control al usuario] es pulsar la tecla {Esc} mientras el userform esta en printpreview
[por si las dudas, prueba como pudiera 'afectarle' si [NO] usas una instruccion 'application.screenupdating = false' -?-
d) otro punto que pudiera causar una -cierta- 'interferencia' es si dicho boton tiene la propiedad 'TakeFocusOnClick' en True -?-

comentas [si hubiera] detalles adicionales ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 FeCel
28/10/2005 - 20:43 | Informe spam
Hector Miguel:
No logro que funcione. Puse el commando UserForm1.Show vbModeLess para abrir
el formulario desde el cual haría el PrintPreview, y no reconoce el
vbModeLess (da error de compilación).
Traté de probar con Mode = msoModeModeless (aparec en la Ayuda de
Micorosoft Visual Basic), y tampoco da resultado.
Con la tecla Esc no pasa nada. Cuando muestra el Preview, el formulario
queda en primer plano, y el PC se bloquea.

Esta es la secuencia que deja bloqueado:

Private Sub VistaPreliminar_Click()
Worksheets(Worksheets.Count).Select
ActiveWindow.SelectedSheets.PrintPreview
End Sub

Saludos
FeCel

"Héctor Miguel" escribió:

hola, FeCel !

> Tengo el siguiente problema que no se si tiene solucion.
> En un formulario quisiera agregar un boton que permita visualizar el listado (Vista preliminar).
> El problema es que si agrego el comando: ActiveWindow.SelectedSheets.PrintPreview desde un formulario
> el PC queda bloqueado y no permite salir de la presentacion preliminar.

-> el -verdadero- 'problema' es que al mandar la ejecucion de la vista preliminar de impresion [PrintPreview por codigo]...
[se supone que] le estas 'cediendo el control' de la aplicacion ->al usuario<- :)) [entonces]...
a) al mostrar el formulario, asegurate que lo muestras en forma 'no-modal' [p.e. -> UserForm1.Show vbModeLess]
para que el usuario tenga la posibilidad de cancelar [o INCLUSO imprimir] o interactuar en el dialogo del printpreview
b) si la version de excel es menor a 2000, la presentacion de formularios 'no-modales' no tiene soporte 'directo' :-(
seria necesario echar mano de trucos adicionales :))
c) otra alternativa [si no quieres cederle el control al usuario] es pulsar la tecla {Esc} mientras el userform esta en printpreview
[por si las dudas, prueba como pudiera 'afectarle' si [NO] usas una instruccion 'application.screenupdating = false' -?-
d) otro punto que pudiera causar una -cierta- 'interferencia' es si dicho boton tiene la propiedad 'TakeFocusOnClick' en True -?-

comentas [si hubiera] detalles adicionales ?
saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
28/10/2005 - 22:05 | Informe spam
hola, FeCel !

No logro que funcione. Puse... UserForm1.Show vbModeLess para abrir el formulario... y... el vbModeLess da error de compilacion
Trate... con Mode = msoModeModeless (aparec en la Ayuda de Micorosoft Visual Basic), y tampoco da resultado
Con la tecla Esc no pasa nada. Cuando muestra el Preview, el formulario queda en primer plano, y el PC se bloquea.
Esta es la secuencia que deja bloqueado:
Private Sub VistaPreliminar_Click()
Worksheets(Worksheets.Count).Select
ActiveWindow.SelectedSheets.PrintPreview
End Sub



1) supongo [aunque no lo has mencionado] que la version que usas de excel es la '97 -?- [y si recuerdas del mensaje anterior]...
a) al mostrar el formulario, asegurate que lo muestras en forma 'no-modal' [p.e. -> UserForm1.Show vbModeLess]
para que el usuario tenga la posibilidad de cancelar [o INCLUSO imprimir] o interactuar en el dialogo del printpreview
b) si la version de excel es menor a 2000, la presentacion de formularios 'no-modales' no tiene soporte 'directo' :-(
seria necesario echar mano de trucos adicionales :))
c) otra alternativa [si no quieres cederle el control al usuario] es pulsar la tecla {Esc} mientras el userform esta en printpreview



2) probando con el codigo que expones en excel '97... [efectivamente]... el formulario queda 'al frente' en el printpreview...
sin embargo... SI 'me deja' hacer uso de la tecla '{Esc}' [entonces]... supongo que estas 'manejando' la salida del formulario -?-
[p.e.] sando en alguna otra parte del codigo instrucciones del tipo 'EnableCancelKey'... o...
[probablemente] usando el evento '_queryclose' del formulario con algo +/- como...
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = CloseMode = vbFormControlMenu
End Sub
con lo cual estarias tambien 'impidiendo' que el usuario cierre 'a voluntad' el formulario [hasta que use 'tu' forma de salida] -?-
y... como el formulario [y el codigo] queda 'imposibilitado' para 'recibir' una respuesta del usuario... :-((

3) si la version de excel que estas usando es la '97... muestra el formulario de forma 'normal' [SIN el vbModeLess]...
y prueba con las siguientes lineas [para simular el vbModeLess]...
en el modulo de codigo del formulario ==Private Sub UserForm_Activate()
SendKeys "{esc}"
Application.Dialogs(xlDialogOpen).Show
End Sub

perdon por 'tanto rollo' :)) pero... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 FeCel
05/11/2005 - 22:05 | Informe spam
Héctor Miguel,
Con bastante retraso, pero por fin logré que funcione. Tu primera indicación
era correcta. Mi error fue que el comando lo ingresaba
Userform1.Show.vbModeLess (con un punto). En resumen, funciona el {Esc}, se
puede mover las páginas del PrintPreview. El único inconveniente, es que en
primer plano permanece el formulario ¿es posible dejarlo hidden mientras se
muestra el PrintPreview, y que al salir con {Esc} se restaure?.
Saludos
FeCel


"Héctor Miguel" escribió:

hola, FeCel !

> No logro que funcione. Puse... UserForm1.Show vbModeLess para abrir el formulario... y... el vbModeLess da error de compilacion
> Trate... con Mode = msoModeModeless (aparec en la Ayuda de Micorosoft Visual Basic), y tampoco da resultado
> Con la tecla Esc no pasa nada. Cuando muestra el Preview, el formulario queda en primer plano, y el PC se bloquea.
> Esta es la secuencia que deja bloqueado:
> Private Sub VistaPreliminar_Click()
> Worksheets(Worksheets.Count).Select
> ActiveWindow.SelectedSheets.PrintPreview
> End Sub

1) supongo [aunque no lo has mencionado] que la version que usas de excel es la '97 -?- [y si recuerdas del mensaje anterior]...
> a) al mostrar el formulario, asegurate que lo muestras en forma 'no-modal' [p.e. -> UserForm1.Show vbModeLess]
> para que el usuario tenga la posibilidad de cancelar [o INCLUSO imprimir] o interactuar en el dialogo del printpreview
> b) si la version de excel es menor a 2000, la presentacion de formularios 'no-modales' no tiene soporte 'directo' :-(
> seria necesario echar mano de trucos adicionales :))
> c) otra alternativa [si no quieres cederle el control al usuario] es pulsar la tecla {Esc} mientras el userform esta en printpreview

2) probando con el codigo que expones en excel '97... [efectivamente]... el formulario queda 'al frente' en el printpreview...
sin embargo... SI 'me deja' hacer uso de la tecla '{Esc}' [entonces]... supongo que estas 'manejando' la salida del formulario -?-
[p.e.] sando en alguna otra parte del codigo instrucciones del tipo 'EnableCancelKey'... o...
[probablemente] usando el evento '_queryclose' del formulario con algo +/- como...
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = CloseMode = vbFormControlMenu
End Sub
con lo cual estarias tambien 'impidiendo' que el usuario cierre 'a voluntad' el formulario [hasta que use 'tu' forma de salida] -?-
y... como el formulario [y el codigo] queda 'imposibilitado' para 'recibir' una respuesta del usuario... :-((

3) si la version de excel que estas usando es la '97... muestra el formulario de forma 'normal' [SIN el vbModeLess]...
y prueba con las siguientes lineas [para simular el vbModeLess]...
en el modulo de codigo del formulario ==> Private Sub UserForm_Activate()
SendKeys "{esc}"
Application.Dialogs(xlDialogOpen).Show
End Sub

perdon por 'tanto rollo' :)) pero... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#5 Héctor Miguel
05/11/2005 - 22:39 | Informe spam
hola, FeCel !

... error... el comando lo ingresaba Userform1.Show.vbModeLess (con un punto)
... funciona el {Esc}, se puede mover las paginas del PrintPreview
... unico inconveniente... en primer plano permanece el formulario
.. dejarlo hidden mientras se muestra el PrintPreview, y que al salir con {Esc} se restaure?



[en este caso]... puedes -hasta- 'olvidarte' del 'vbModeLess' [a menos que lo requieras en la hoja de calculo] :D
si consideramos que mientras la aplicacion esta en 'printpreview' quien tiene el control es el usuario...
solo modifica las instrucciones asociadas al evento '_click' del boton de comando a...
en el modulo de codigo del formulario ==Private Sub VistaPreliminar_Click()
Me.Hide
Worksheets(Worksheets.Count).Select
ActiveWindow.SelectedSheets.PrintPreview
Me.Show
End Sub

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida