Aqui está uma tentativa no código que você precisa. Ocultar e exibir linhas é fácil, se você souber como. Imprimi uma planilha com o gravador de macro para que você possa ver como você pode personalizar a impressão, se desejar. Gostaria de definir uma tecla de atalho para executar essa macro.
Option Explicit
Sub PrintNonBlankColA()
Dim RowCrnt As Integer
Dim RowLast As Integer
' Note: This operates on the active worksheet
Application.ScreenUpdating = False
RowLast = Cells.SpecialCells(xlCellTypeLastCell).Row
' Hide all rows with a used cell and column "A" empty
For RowCrnt = 1 To RowLast
If IsEmpty(Cells(RowCrnt, "A")) Then
Range(RowCrnt & ":" & RowCrnt).EntireRow.Hidden = True
End If
Next
' For the following statements, I switched on the macro recorder,
' printed a sheet with all the headers and footers I wanted,
' switched off the macro recorder and copied the code out of the
' saved macro.
' Consider: .CenterHeader = "Activities for Acme Inc"
' If you name the worksheets for the client, the following would
' give you a heading for the appropriate client:
' .CenterHeader = "Activities for " & ActiveSheet.Name
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "Activities for Acme Inc"
.RightHeader = ""
.LeftFooter = "&D"
.CenterFooter = "Page &P of &N"
.RightFooter = "Copyright Nadir Co."
.LeftMargin = Application.InchesToPoints(0.75)
.RightMargin = Application.InchesToPoints(0.75)
.TopMargin = Application.InchesToPoints(1)
.BottomMargin = Application.InchesToPoints(1)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.5)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
' Unhide all rows
Cells.EntireRow.Hidden = False
End Sub
Como carregar o código acima em um módulo
Dentro do Excel:
- Selecione
Tools
, em seguida,Macro
, em seguida,Visual Basic Editor
. Como alternativa, clique emAlt+F11
. Você provavelmente verá o Explorador de Projetos à esquerda, a janela Imediata na parte inferior, com a maior parte da tela cinza. - Selecione
Insert
, em seguida,Module
. A seção cinza ficará branca. - Copie e cole meu código na seção agora branca. A macro agora pode ser executada em qualquer planilha.
Usando a macro
- Mude para o Excel.
- Selecione
Tools
, em seguida,Macro
, em seguida,Macros...
. Como alternativa, clique emAlt+F8
. Uma pequena janela Macro será exibida. Você terá apenas uma macro para que ela seja selecionada e o botãoRun
estará ativo.
Você pode executar a macro clicando em Alt+F8
, em seguida, Enter
, mas você pode achar o seguinte mais conveniente.
- Na janela Macro, selecione
Options
. Você verá agora uma pequena janela Macro Options. - Insira uma letra (sempre uso q) na caixinha e clique em
OK
. - Feche a janela de macros.
Agora você pode alternar para a planilha de trabalho do cliente apropriado e clicar em Ctrl+q
para executar a macro.
Ajuste a macro para seus requisitos
No meio do meu código, há uma ideia de como você pode configurar um relatório com "Atividades para a Acme Inc" na parte superior e na data, o número da página e os direitos autorais na parte inferior.
Substitua este código da seguinte forma:
- No Excel, selecione
Tools
, em seguida,Macro
, em seguida,Record New macro
. Você vê uma pequena janela Macro de registro. - Verifique se a caixa de texto em "Armazenar macro em:" diz "Esta pasta de trabalho".
- Clique em
OK
. A janela desaparece. Você pode ver uma janela muito pequena com um botão quadrado chamado Parar gravação. Se esta janela estiver visível, ignore-a no momento. - Imprima um relatório de cliente com os cabeçalhos, rodapés, margens, etc. que você precisar.
- Se você puder ver a pequena janela, clique nela. Se você não puder vê-lo, selecione
Tools
, em seguida,Macro
, em seguida,Stop Recording
. - Mude para o Editor do Visual Basic. Haverá um novo módulo. Clique nele na janela Project Explorer.
- Você verá
Sub Macro1()
todas as instruções para imprimir um relatório de cliente da maneira que você gosta eEnd Sub
. - Copie essas instruções (não sub e sub-final) e cole-as na parte superior das instruções equivalentes na minha macro.
Se você não incluir nada como o nome do cliente nos cabeçalhos e rodapés do relatório, sua macro estará pronta para uso. Eu dou um exemplo no meu código onde eu uso o nome da planilha no cabeçalho do relatório. Sem conhecer suas necessidades exatas, não posso ser mais preciso, mas espero que isso lhe dê um começo.