Impresión de todo o nada

September 30

Karen está buscando una manera de imprimir un libro completo, incluso si un usuario decide imprimir una sola hoja de cálculo. En otras palabras, ella está buscando una manera de imprimir ya sea todo el libro, o nada en absoluto, no debe haber "entre" opciones.

La única manera de manejar esto es mediante el uso de un macro. VBA permite crear macros que se inician cuando se producen determinados eventos. Uno de los eventos que pueden desencadenar macros es el caso de "imprimir". Cuando alguien pregunta para imprimir, o elige ver una vista previa de impresión, se activa el evento BeforePrint del objeto Workbook. Usted puede crear su propia macro que se ejecuta cuando se activa el evento.

Private Sub Workbook_BeforePrint (Cancel As Boolean)
Dim SHT como variante
Dim bPreview As Boolean
Dim IResponse As Integer
On Error GoTo ErrHandler

IResponse = MsgBox (símbolo: = "? ¿Quieres Vista preliminar", _
Botones: = vbYesNoCancel, Título: "? Vista previa" =)

Select Case IResponse
VbYes Case
bPreview = True
Caso vbNo
bPreview = false
Case Else
Ir ExitHandler
End Select
Application.EnableEvents = False
Para Cada sht En Hojas
Si sht.Visible Entonces
sht.PrintOut Vista previa: = bPreview
End If
Siguiente

ExitHandler:
Application.EnableEvents = True
Cancelar = True
Exit Sub

ErrHandler:
MsgBox Err.Description
Reanudar ExitHandler
End Sub

Cuando Excel se prepara para imprimir, o cada vez que se invoca la vista preliminar, el evento BeforePrint se dispara y se ejecuta esta macro. La macro primera pregunta al usuario si él o ella quiere hacer una vista previa de impresión. Una estructura Select Case se utiliza para establecer la variable bPreview basado en la respuesta a la pregunta. El ajuste de bPreview entonces controla lo que sucede.

Si el usuario hace clic en Cancelar cuando se le preguntó acerca de la vista previa, a continuación, la macro se sale y la impresión se cancela. De lo contrario, cada hoja del libro se examina para su impresión o vista previa. Si la hoja de cálculo es visible, se imprime, y la propiedad de vista previa se fija igual a bPreview (True significa que la hoja se ve de antemano; False significa que se imprime en realidad).

Observe que la macro establece la propiedad EnableEvents False. Esto se hace para que no hay otros eventos pueden desencadenar mientras imprime o vista previa. Si EnableEvents se deja "en", entonces cada vez que se utiliza el método PrintOut, todo el evento BeforePrint se activa-el nuevo usuario terminaría en un bucle sin fin, si la gestión de eventos no se apaga.

Además, tenga en cuenta que una de las últimas cosas que ocurren antes de salir de la macro es que la propiedad Cancel se establece en True. Esto se hace para que la solicitud de impresión o vista previa de impresión original que generó el evento BeforePrint se cancela. Hay, después de todo, no es necesario para completar esta solicitud, y la macro hicieron todo el manejo para el usuario de impresión.

Hay una advertencia, por supuesto, a la utilización de este enfoque de la impresión: Si macros no están habilitados, el controlador no funciona y el usuario puede imprimir si lo deseas. (Shift Sosteniendo al abrir el libro deshabilita las macros y los usuarios la mayoría de veces se le pregunta si desean habilitar las macros.) Otras cuestiones de ExcelTips han discutido este hecho.

ExcelTips es su fuente de capacitación rentable Microsoft Excel. Esta punta (3329) se aplica a Microsoft Excel 97, 2000, 2002, y 2003. Usted puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y versiones posteriores) aquí: Impresión de todo o nada.