Ocultar células ao imprimir no Excel

1

Estou usando o Excel 2007. Tenho uma planilha de estimativas, que usarei para acompanhar as informações do cliente. Há algumas informações de baixo nível que o cliente não deve ver em sua versão do documento. Estou procurando alcançar os seguintes resultados:

Apenas linhas com dados na primeira célula "Número da tarefa" na Coluna A serão exibidas durante a impressão. A maneira que eu acredito que isso é factível é o script VBA para esconder todas as linhas sem dados na primeira célula ao imprimi-las e exibi-las posteriormente.

Link para um modelo de documento no Google Docs

Se possível, a seção do meio deve ser expansível para assumir tarefas extras, embora seja provavelmente mais fácil ter 100 células na seção intermediária que obedecem às regras de ocultação.

    
por Gerard 05.01.2012 / 11:33

3 respostas

1

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 em Alt+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 em Alt+F8 . Uma pequena janela Macro será exibida. Você terá apenas uma macro para que ela seja selecionada e o botão Run 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 e End 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.

    
por 05.01.2012 / 14:20
0

Então, qual é a pergunta? Se o seu "Como ocultar células / linhas ao imprimir" , a resposta é usar o evento Workbook_BeforePrint para configurar a planilha para impressão, executar a impressão e restaurar a visualização anterior. / p>     

por 05.01.2012 / 13:48
0

Você pode tentar selecionar as células que deseja ocultar, ir para o formato, protegê-las e, em seguida, ocultá-las. Em seguida, selecione a guia de revisão, proteja a folha. Mantenha a senha em branco e imprima.

Quando você quiser as células de volta, basta pressionar a folha desprotegida.

Um pouco mais tedioso do que fazer com uma macro, mas mais simples ao mesmo tempo.

    
por 07.01.2012 / 23:36