Existem duas questões diferentes aqui.
- Como colocar números de página no rodapé
- 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:
- Irparaaconfiguraçãodapágina:
- Cliqueemcabeçalho/rodapé
- Cliquenobotão"Rodapé personalizado ..."
- 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:
- Clicando na flor no canto superior esquerdo da janela do Excel, escolha "Opções do Excel"
- Verifique se a seção "Popular" está selecionada
- 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.
- Clique na guia Desenvolvedor
- Clique no botão "Gravar Macro".
- 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
...