Excel contenido condicional / Formateo de impresión frente a la pantalla y saltos de página
-
19-09-2019 - |
Pregunta
I tiene una macro publicación VBA en Excel que genera un libro publicado basado en una hoja de trabajo de configuración maestro y una serie de hojas de trabajo con los datos. La versión publicada es de datos rectas, siendo formateados, pero sin fórmulas y con ciertas notas e información de antecedentes suprimidas. Básicamente, la configuración maestra contiene una tabla de nombres de hoja de cálculo y oscila para ser publicada.
Para hacer la versión publicada imprimible, algunas de las hojas de trabajo necesitan saltos de página insertados. Soy consciente de que puedo insertarlos en base a la misma configuración, y también puedo cambiar la orientación de la impresión y los márgenes de una hoja de trabajo en particular, mediante la adición de unas cuantas más columnas a mi hoja maestra.
A continuación viene la parte difícil. Si una tabla tiene algunos de estos saltos de página insertados durante el proceso de publicación, me gustaría una fila de información que se inserta antes del salto de página que indica que la tabla continúa en la página siguiente. Pero yo sólo quiero que esto aparece en la versión impresa, no se visualiza en la visualización en pantalla.
¿Hay una manera de hacer esto?
Solución
En primer lugar, insertar una fila y se esconden justo antes del salto de página. A continuación, puede utilizar la href="http://msdn.microsoft.com/en-us/library/bb210446.aspx" rel="nofollow noreferrer"> BeforePrint
caso en el cuaderno de trabajo para encontrar todos filas con el texto "Ver Página siguiente" en ella, y luego ellos Mostrar.
Sub Workbook_BeforePrint(cancel as Boolean)
Dim rngCell as Range
set rngCell = ActiveSheet.UsedRange.Find("See Next Page")
while not rngCell is Nothing
if not rngCell is Nothing then
rngCell.EntireRow.Hidden = false
end if
set rngCell = ActiveSheet.UsedRange.FindNext()
loop
End Sub
Esto le dará un poco eras tiene que ir, sin embargo, se le dejará susceptibles a la cuestión del hecho de que no hay AfterPrint
. Por lo tanto, lo que puede hacer es la siguiente:
Sub Workbook_BeforePrint(cancel as Boolean)
Application.EnableEvents = false
'Unhide rows here
if cancel then
Workbook.PrintPreview()
else
Workbook.PrintOut()
end if
'Rehide rows here
Application.EnableEvents = True
End Sub
Tenga en cuenta que cancel
le dirá si su esencia, una vista previa de impresión o un comando de impresión real. Es muy amable de ella, creo.