VBA Excel, guardar antes de imprimir

07/06/2010 - 19:49 por Saga | Informe spam
Saludos! No se si este sea el mejor foro para esta pregunta.
Fui a microsoft.public.es.vba pero casi no tiene actividad. Si
me recomiendan alguno (ingles o español) no hay problema.

Un conocido esta programando en Excel 2003 y tiene una hoja
donde el usuario captura datos de un recibo. Cuando haya
terminado la captura, da clic a un boton que los copia a
otra hoja dentro del mismo libro. Lo que él quiere es que
el usuario no pueda imprimir hasta que haya dado clic al
boton para guardar. El codigo que tiene en el evento de
clic del boton es el siguiente:

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
'Copia datos a hoja BD2
Sheets("BD2").Unprotect
With Sheets("BD2").Range("A1000").End(xlUp)

.Offset(1, 0) = Sheets("lid Gris").Range("I17") 'Poliza
.Offset(1, 4) = Sheets("lid Gris").Range("G12") 'Vig de
.Offset(1, 5) = Sheets("lid Gris").Range("I12") 'Vig a
.Offset(1, 6) = Sheets("lid Gris").Range("C59") 'Codigo Seguridad
.Offset(1, 9) = Sheets("lid Gris").Range("C19") 'Nombre
.Offset(1, 10) = Sheets("lid Gris").Range("C20") 'Domicilio
.Offset(1, 11) = Sheets("lid Gris").Range("C21") 'Colonia
.Offset(1, 12) = Sheets("lid Gris").Range("C22") 'Ciudad
.Offset(1, 13) = Sheets("lid Gris").Range("F21") 'C.P.
.Offset(1, 14) = Sheets("lid Gris").Range("F22") 'Telefono
.Offset(1, 15) = Sheets("lid Gris").Range("C28") 'Marca
.Offset(1, 16) = Sheets("lid Gris").Range("E28") 'Modelo
.Offset(1, 17) = Sheets("lid Gris").Range("I28") 'Placas
.Offset(1, 18) = Sheets("lid Gris").Range("C31") 'Serie
.Offset(1, 19) = Sheets("lid Gris").Range("E31") 'Motor
.Offset(1, 20) = Sheets("lid Gris").Range("I52") 'Precio

End With
Sheets("BD2").Unprotect

'Confirma el registro, puede eliminarse
MsgBox "REGISTRADO", vbOKOnly, "CAPTURADO"

Sheets("lid Gris").Unprotect
Application.ScreenUpdating = True

End Sub

¿Que se le puede recomendar para tener esta funcionalidad?
Gracias, Saga

Preguntas similare

Leer las respuestas

#1 aa
08/06/2010 - 00:24 | Informe spam
Tiene que controlarlo en
Private Sub Workbook_BeforePrint(Cancel As Boolean)

End Sub
"Saga" wrote in message
news:hujbfr$uij$
Saludos! No se si este sea el mejor foro para esta pregunta.
Fui a microsoft.public.es.vba pero casi no tiene actividad. Si
me recomiendan alguno (ingles o español) no hay problema.

Un conocido esta programando en Excel 2003 y tiene una hoja
donde el usuario captura datos de un recibo. Cuando haya
terminado la captura, da clic a un boton que los copia a
otra hoja dentro del mismo libro. Lo que él quiere es que
el usuario no pueda imprimir hasta que haya dado clic al
boton para guardar. El codigo que tiene en el evento de
clic del boton es el siguiente:

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
'Copia datos a hoja BD2
Sheets("BD2").Unprotect
With Sheets("BD2").Range("A1000").End(xlUp)

.Offset(1, 0) = Sheets("lid Gris").Range("I17") 'Poliza
.Offset(1, 4) = Sheets("lid Gris").Range("G12") 'Vig de
.Offset(1, 5) = Sheets("lid Gris").Range("I12") 'Vig a
.Offset(1, 6) = Sheets("lid Gris").Range("C59") 'Codigo Seguridad
.Offset(1, 9) = Sheets("lid Gris").Range("C19") 'Nombre
.Offset(1, 10) = Sheets("lid Gris").Range("C20") 'Domicilio
.Offset(1, 11) = Sheets("lid Gris").Range("C21") 'Colonia
.Offset(1, 12) = Sheets("lid Gris").Range("C22") 'Ciudad
.Offset(1, 13) = Sheets("lid Gris").Range("F21") 'C.P.
.Offset(1, 14) = Sheets("lid Gris").Range("F22") 'Telefono
.Offset(1, 15) = Sheets("lid Gris").Range("C28") 'Marca
.Offset(1, 16) = Sheets("lid Gris").Range("E28") 'Modelo
.Offset(1, 17) = Sheets("lid Gris").Range("I28") 'Placas
.Offset(1, 18) = Sheets("lid Gris").Range("C31") 'Serie
.Offset(1, 19) = Sheets("lid Gris").Range("E31") 'Motor
.Offset(1, 20) = Sheets("lid Gris").Range("I52") 'Precio

End With
Sheets("BD2").Unprotect

'Confirma el registro, puede eliminarse
MsgBox "REGISTRADO", vbOKOnly, "CAPTURADO"

Sheets("lid Gris").Unprotect
Application.ScreenUpdating = True

End Sub

¿Que se le puede recomendar para tener esta funcionalidad?
Gracias, Saga

Respuesta Responder a este mensaje
#2 Ignacio
08/06/2010 - 13:07 | Informe spam
¡Hola, Saga!

Puedes desactivar los botones de la barra de herramientas y las
opciones de menú que tengan el comando Imprimir ejecutando el
siguiente código:

Private Sub DesactivaImprimir()
CommandBars(1).Controls(1).CommandBar.Controls(15).Enabled = False
CommandBars.FindControl(msoControlButton, 2521).Enabled = False
End Sub

Cuando hayas guardado los datos vuelves a activar los controles de
Imprimir poniendo Enabled = True. También deberías activarlos, por si
acaso, cuando cierre el libro porque si no se quedará desactivada la
opción de Imprimir. Para que funcione el código debes establecer una
referencia a la librería de Office: Microsoft Office 10.0 Object
Library o una versión superior.

Espero que te funcione.
Un saludo,
Ignacio.
Respuesta Responder a este mensaje
#3 aa
08/06/2010 - 20:18 | Informe spam
En ese caso tenes que deshabilitar tambien ctrl + p
"Ignacio" wrote in message
news:
¡Hola, Saga!

Puedes desactivar los botones de la barra de herramientas y las
opciones de menú que tengan el comando Imprimir ejecutando el
siguiente código:

Private Sub DesactivaImprimir()
CommandBars(1).Controls(1).CommandBar.Controls(15).Enabled = False
CommandBars.FindControl(msoControlButton, 2521).Enabled = False
End Sub

Cuando hayas guardado los datos vuelves a activar los controles de
Imprimir poniendo Enabled = True. También deberías activarlos, por si
acaso, cuando cierre el libro porque si no se quedará desactivada la
opción de Imprimir. Para que funcione el código debes establecer una
referencia a la librería de Office: Microsoft Office 10.0 Object
Library o una versión superior.

Espero que te funcione.
Un saludo,
Ignacio.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida