Imprimindo uma folha dinâmica como um documento

2

Eu tenho uma planilha estruturada da seguinte forma:

  • Seção de resumo no topo
  • seção de detalhes na parte inferior
  • A seção de resumo resume a seção de detalhes que é filtrada usando filtros automáticos

Existem dez produtos que precisam ser impressos individualmente, mas eu quero que o rodapé da página mostre a posição geral da página de todos os trabalhos de impressão e o número total de páginas.

Isso provavelmente não está claro. Assim, por exemplo, se eu imprimir a página de duas páginas, a visualização do Produto A imprimirá a página 1 de 2 e 2 de 2. Se eu imprimir uma página, o Produto B mostrará a página 1 de 1. O que eu quero é imprimir ambas e Produto A show Página 1 de 3, Página 2 de 3 e Produto B Página 3 de 3. Existe alguma maneira de conseguir isso?

ATUALIZAÇÃO: Eu estava esperando ter uma resposta do Excel apenas, mas ninguém foi capaz de fornecer uma. Vou postar uma solução que estou usando. Vou deixar isso aberto um pouco mais antes de selecionar minha própria resposta.

UPDATE 2: Thomas tem a resposta certa - somente Excel / VBA!

    
por Sux2Lose 09.03.2011 / 23:35

2 respostas

3

Existem duas questões diferentes aqui.

  1. Como colocar números de página no rodapé
  2. Como executar a aplicação da impressão de vários filtros automáticos após a aplicação de cada filtro.

Para o primeiro, você pode fazer isso na Configuração da Página:

  1. Irparaaconfiguraçãodapágina:
  2. Cliqueemcabeçalho/rodapé
  3. Cliquenobotão"Rodapé personalizado ..."
  4. Em uma das seções, insira "Página e [Página] de & [Páginas]". Isso representa um código para exibir Page 1 of 2 , Page 2 of 2 etc. na parte inferior de cada página.

Para realizar a segunda tarefa, você precisa de uma macro, o que significa que você precisa salvar o arquivo como um arquivo habilitado para macro (xlsm). Depois de fazer isso, você precisa mostrar a guia Desenvolvedor:

  1. Clicando na flor no canto superior esquerdo da janela do Excel, escolha "Opções do Excel"
  2. Verifique se a seção "Popular" está selecionada
  3. Verifique se a opção "Mostrar guia Desenvolvedor na faixa de opções" está marcada.

Agora que você tem os botões visíveis para gerenciar macros, é necessário gravar uma macro que permitirá automatizar o processo de aplicação de vários filtros e a impressão após cada um deles.

  1. Clique na guia Desenvolvedor
  2. Clique no botão "Gravar Macro".
  3. Quando a gravação estiver ativada, percorra o processo que você deseja automatizar. Ou seja, aplique um filtro, imprima, aplique outro filtro, imprima, etc.

Sua macro será gravada em VBA (Visual Basic for Applications) e aparecerá algo como o seguinte:

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
ActiveSheet.Range("$A$3:$A$568").AutoFilter Field:=1, Criteria1:="=a*", _
    Operator:=xlAnd
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
ActiveSheet.Range("$A$3:$A$568").AutoFilter Field:=1, Criteria1:="=b*", _
    Operator:=xlAnd
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False

Adição

Dado o que você mencionou, acho que você pode se aproximar usando uma função assim:

Public Sub GetTotalPageCount()
    Dim horizontalBreaks As Integer
    Dim verticalBreaks As Integer

    horizontalBreaks = ActiveSheet.HPageBreaks.Count + 1
    verticalBreaks = ActiveSheet.VPageBreaks.Count + 1

    GetTotalPageCount = horizontalBreaks * verticalBreaks
End Sub

Para obter o resultado geral desejado, você precisaria criar algo que fizesse algo semelhante ao seguinte pseudo-código:

  • Aplicar filtro
  • Adicionar contagem de páginas ao global var
  • Aplicar filtro
  • Adicionar contagem de páginas ao global var

...

  • (após o último filtro) ActiveSheet.PageSetup.CenterFooter = "Page &P of " & g_TotalPages
  • Aplicar filtro
  • Imprimir
  • Aplicar filtro
  • Imprimir

...

    
por 20.03.2011 / 02:59
0

A solução alternativa que estou usando funciona da seguinte maneira:

  1. Use o VBA para alterar minha impressora para o Adobe Acrobat Pro
  2. Usando o VBA, percorra meus filtros para imprimir cada visualização em um arquivo PDF diferente usando o filtro como nome de arquivo.
  3. Importe todos os arquivos em um arquivo mestre no Adobe Acrobat.
  4. Adicione números de página no Adobe Acrobat.

Eu realmente esperava ter uma solução somente para Excel / VBA, mas não tenho certeza de que isso seja possível.

    
por 21.03.2011 / 20:06