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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top