Excel condicional Content / formatação para Print Screen vs. e quebras de página
-
19-09-2019 - |
Pergunta
Eu tenho uma macro publicar VBA no Excel que gera um livro publicado com base em uma planilha de configuração mestre e um número de planilhas com os dados. A versão publicada é de dados em linha reta, ainda formatados, mas sem fórmulas e com certas notas e informações de fundo suprimida. Basicamente, a configuração do mestre contém uma tabela de nomes de planilhas e intervalos para ser publicado.
Para fazer a versão publicada de impressão, algumas das planilhas precisam quebras de página inseridas. Sei que posso inseri-las com base na mesma configuração, e eu também pode alterar a orientação da impressão e as margens de uma planilha específica, adicionando mais algumas colunas para a minha folha de mestre.
Aqui vem a pouco complicada. Se uma tabela tem algumas dessas quebras de página inseridas durante o processo de publicação, eu gostaria de uma linha informativa para ser inserido antes da quebra de página indicando que a tabela continua na página seguinte. Mas eu só quero isso para mostrar-se na versão impressa, não é exibido no display na tela.
Existe uma maneira de fazer isso?
Solução
Em primeiro lugar, inserir uma linha e escondê-lo pouco antes da quebra de página. Então, você pode usar o evento BeforePrint
na pasta de trabalho para encontrar tudo linhas com o texto "ver página seguinte" nele, e depois mostrá-los.
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
Isto fará você eram um pouco que você precisa para ir, no entanto, ele vai deixá-lo suscetível à questão do fato de que não há nenhuma AfterPrint
. Então, o que você pode fazer é o seguinte:
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
Note que cancel
será essencialmente dizer se é um visualização de impressão ou um comando real de impressão. É muito tipo de isso, eu acho.