Te anexo una opción para controlar la impresión.
Con lo siguiente, primero tienes que presionar el botón "Vista previa", después el botón "Procesar" y por último el botón "Imprimir", si no realizas esta secuencia no se permite la impresión.
En los eventos de ThisWorbook tienes que poner la siguiente macro
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Por.Dante Amor
Cancel = True
Select Case Sheets("tmp").[A1]
Case ""
MsgBox "No se permite la impresión", vbExclamation, "IMPRESIÓN"
Case 1
Sheets("tmp").[A1] = ""
Cancel = False
Case 2
Cancel = False
End Select
End Sub
Instrucciones para poner la macro en los eventos ThisWorkbook
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a ThisWorkbook
- Del lado derecho copia la macro
Lo siguiente lo tienes que poner en tu formulario
Private Sub CommandButton1_Click()
'Por.Dante Amor
'Vista previa
Sheets("tmp").[A1] = 1
UserForm1.Hide
Sheets("Hoja1").PrintPreview
Sheets("tmp").[A1] = 1
UserForm1.Show
End Sub
Private Sub CommandButton2_Click()
'Por.Dante Amor
'Procesar
If Sheets("tmp").[A1] = "" Then
MsgBox "No se ha realizado la vista previa", vbExclamation, "IMPRESIÓN"
Else
Sheets("tmp").[A1] = 2
MsgBox "Procesado", vbInformation, "IMPRESIÓN"
End If
End Sub
Private Sub CommandButton3_Click()
'Por.Dante Amor
'Imprimir
If Sheets("tmp").[A1] = 2 Then
Sheets("Hoja1").PrintOut Copies:=1, Collate:=True
Sheets("tmp").[A1] = ""
MsgBox "Impresión enviada", vbInformation, "IMPRESIÓN"
Else
MsgBox "No se ha procesado", vbCritical, "IMPRESIÓN"
End If
End Sub
Private Sub UserForm_Initialize()
'Al iniciar
Sheets("tmp").[A1] = ""
End Sub
Para que puedas tener la vista previa desde el formulario tienes que poner la propiedad ShowModal del formulario en False
No podrás imprimir desde la vista previa, no podrás imprimir desde el menú de excel, no podrás imprimir con ningún comando directo, solamente podrás imprimir desde el formulario.
Para poder controlar la impresión desde el formulario, con esta opción, tienes que crear una hoja temporal llamada "tmp".
Te anexo mi archivo, la hoja "tmp" está oculta, la hoja que se imprime es la "Hoja1", prueba el funcionamiento del formulario y después adapta las instrucciones a tu formulario.
https://www.dropbox.com/s/cvm5gyyrmm9s5c8/vista%20previa%20desde%20userform.xlsm?dl=0
Saludos. Dante Amor
Recuerda valorar la respuesta.
-Hola Dante , podrías compartir el enlace "https://www.dropbox.com/s/cvm5gyyrmm9s5c8/vista%20previa%20desde%20userform.xlsm?dl=0 ", esta disponible y me interesa para poder comprender mejor y aplicarlo a mi proyecto, gracias !! - victor alfredo retamar