Botones para macros

12/02/2007 - 14:44 por Domi | Informe spam
Saludos a todos.
Tengo un documento en el que he añadido dos botones para que ejecuten una
determinada macro. Hasta ahí todo bien. Lo que quisiera es ocultar esos
botones cuando se mande a imprimir el documento. Supongo que habrá solución
a mi problema.
Muchas gracias por anticipado.
Domi.

Preguntas similare

Leer las respuestas

#1 Tux
12/02/2007 - 23:08 | Informe spam
Domi escribió:

Saludos a todos.
Tengo un documento en el que he añadido dos botones para que ejecuten una
determinada macro. Hasta ahí todo bien. Lo que quisiera es ocultar esos
botones cuando se mande a imprimir el documento. Supongo que habrá solución
a mi problema.
Muchas gracias por anticipado.
Domi.






Hola Domi :-)

Prueba algo como esto :

[este codigo no te hace visibles los botones antes de imprimir y te los
vuelve a mostrar despues de imprimir]

'--

Private Sub CommandButton1_Click()
'sacado de un articulo de Ibrahim
'http://word.mvps.org/FAQs/TblsFldsF...Button.htm
'solo he añadido unas lineas para dos botones

With ActiveDocument
.Shapes(1).Visible = msoFalse
.Shapes(2).Visible = msoFalse

'tu codigo

.PrintOut Background:=False
.Shapes(1).Visible = msoTrue
.Shapes(2).Visible = msoTrue
End With

End Sub

'

En el caso de que tuvieras mas objetos en documento dependiendo de la
inserccion de esos objetos fallaria en la visualizacion a la hora de
impresión, pero comprueba si te va bien :-)

Comentanos ok? :-)

Saludos
Monica

Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

www.fermu.com
www.zorval.com
Respuesta Responder a este mensaje
#2 Domi
13/02/2007 - 12:04 | Informe spam
Muchas gracias.

Os comento un poco más en detalle mi problema.
La idea es crear una serie de documentos a partir de una plantilla
determinada. Es en esta plantilla donde estoy implementando la
funcionalidad. Existen zonas del documento que me interesan proteger y otras
no. Para ello he insertado dos botones que ejecutan el código siguiente:

Private Sub cmdProteger_Click()
ActiveDocument.Unprotect Password:="icaro"
ActiveDocument.Sections(1).ProtectedForForms = True
ActiveDocument.Sections(2).ProtectedForForms = True
ActiveDocument.Sections(3).ProtectedForForms = True
ActiveDocument.Sections(4).ProtectedForForms = True
ActiveDocument.Protect Password:="icaro", NoReset:=True,
Type:=wdAllowOnlyFormFields
End Sub

Private Sub cmdDesproteger_Click()
ActiveDocument.Unprotect Password:="icaro"
ActiveDocument.Sections(2).ProtectedForForms = False
ActiveDocument.Sections(4).ProtectedForForms = False
ActiveDocument.Protect Password:="icaro", NoReset:=True,
Type:=wdAllowOnlyFormFields
End Sub

Hasta aquí todo correcto. Mi problema es que la impresión NO la realizará el
usuario a través de otro botón sino directamente por menu o la barra de
herramientas.
Lo que necesitaría es poder capturar algún evento que se disparara justo
antes de imprimir y justo después. En el editor de macros para el objeto
'document' tan solo se me muestran los eventos 'close', 'new' y 'open'.
Cuando desarrollas en VB y creas un objeto Word con la cláusula 'with
events' tienes a tu disposición una serie de métodos y eventos que no veo
como referenciarlos directamente desde el editor de macros de la plantilla.

A ver si ponéis un poco de luz a mi oscuridad ;-)
Muchas gracias de antemano.
Domi.
Respuesta Responder a este mensaje
#3 Tux
13/02/2007 - 14:30 | Informe spam
Domi escribió:

Muchas gracias.

Os comento un poco más en detalle mi problema.
La idea es crear una serie de documentos a partir de una plantilla
determinada. Es en esta plantilla donde estoy implementando la
funcionalidad. Existen zonas del documento que me interesan proteger y otras
no. Para ello he insertado dos botones que ejecutan el código siguiente:

Private Sub cmdProteger_Click()
ActiveDocument.Unprotect Password:="icaro"
ActiveDocument.Sections(1).ProtectedForForms = True
ActiveDocument.Sections(2).ProtectedForForms = True
ActiveDocument.Sections(3).ProtectedForForms = True
ActiveDocument.Sections(4).ProtectedForForms = True
ActiveDocument.Protect Password:="icaro", NoReset:=True,
Type:=wdAllowOnlyFormFields
End Sub

Private Sub cmdDesproteger_Click()
ActiveDocument.Unprotect Password:="icaro"
ActiveDocument.Sections(2).ProtectedForForms = False
ActiveDocument.Sections(4).ProtectedForForms = False
ActiveDocument.Protect Password:="icaro", NoReset:=True,
Type:=wdAllowOnlyFormFields
End Sub

Hasta aquí todo correcto. Mi problema es que la impresión NO la realizará el
usuario a través de otro botón sino directamente por menu o la barra de
herramientas.
Lo que necesitaría es poder capturar algún evento que se disparara justo
antes de imprimir y justo después. En el editor de macros para el objeto
'document' tan solo se me muestran los eventos 'close', 'new' y 'open'.
Cuando desarrollas en VB y creas un objeto Word con la cláusula 'with
events' tienes a tu disposición una serie de métodos y eventos que no veo
como referenciarlos directamente desde el editor de macros de la plantilla.

A ver si ponéis un poco de luz a mi oscuridad ;-)
Muchas gracias de antemano.
Domi.





Hola Domi :-)

Pues si se puede capturar eventos, mas que capturar se pueden crear
eventos de clase pero tambien se puede hacer lo que comentas mediante la
siguiente manera me explico:

Por ejemplo prueba el siguiente codigo:

[Insertalo en un modulo ]

'
Sub ArchivoImprimir()

MsgBox "hola"

End Sub
Sub ArchivoImprimirPredeter()

MsgBox "como tamos"
End Sub
'--

Entonces cada vez que tu le des al boton imprimir de la barra de
herramientas o le des a menu > archivo > imprimir o le des a [Ctrl+P ]

Te saldra un MSGbox :-)

Bien el tema esta que queremos ocultar esos CommandButton creados para
tu uso personal.

Pues estaria en crear el codigo en esas intrucciones de codigo para que
al darle a imprimir nos ocultara los botones del documento (Shapes) y al
acabar de inprimir nos los volviera a visualizar :-)

Prueba a colocar el anterior codigo en esas dos Instrucciones de codigo
que te he dado :-)

Y nos comentas ok? :-)

Saludos
Monica

Pd: Haz tu la prueba que ahora tengo que salir de viaje y no puedo hacer
la comprobacion :-S pero en cuanto venga hago las comprobaciones
oportunas :-)

Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

www.fermu.com
www.zorval.com
Respuesta Responder a este mensaje
#4 Tux
13/02/2007 - 21:18 | Informe spam
Domi escribió:

Muchas gracias.
Lo que necesitaría es poder capturar algún evento que se disparara justo
antes de imprimir y justo después. En el editor de macros para el objeto
'document' tan solo se me muestran los eventos 'close', 'new' y 'open'.
Cuando desarrollas en VB y creas un objeto Word con la cláusula 'with
events' tienes a tu disposición una serie de métodos y eventos que no veo
como referenciarlos directamente desde el editor de macros de la plantilla.

A ver si ponéis un poco de luz a mi oscuridad ;-)
Muchas gracias de antemano.
Domi.






Pues comprobado de funcionar funciona :

'-
Sub ArchivoImprimir()

With ActiveDocument
.Shapes(1).Visible = msoFalse
.Shapes(2).Visible = msoFalse

.PrintOut
.Shapes(1).Visible = msoTrue
.Shapes(2).Visible = msoTrue
End With

End Sub

Sub ArchivoImprimirPredeter()

With ActiveDocument
.Shapes(1).Visible = msoFalse
.Shapes(2).Visible = msoFalse

.PrintOut
.Shapes(1).Visible = msoTrue
.Shapes(2).Visible = msoTrue
End With

End Sub

'-

Pero ahora bien faltaria saber si en ese documento tienes mas botones o
autoformas, o imagenes puesto que todo podria se que en lugar de no
imprimir los botones te ocultase otros objetos ¿? no se si me explique
bien¿?

Saludos
Monica


Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

www.fermu.com
www.zorval.com
Respuesta Responder a este mensaje
#5 Domi
14/02/2007 - 11:50 | Informe spam
Muchas gracias Mónica.

No sabía que se pudieran sobrecargar los métodos del propio documento word.
Todo funciona correctamente. Ahora estoy viendo la forma de llamar al cuadro
de diálogo de impresoras antes de imprimir el documento, ya que el método
".PrintOut" saca la impresión diractamente a la impresora predeterminada.

Domi.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida