Notifications
Clear all

Macro para imprimir apens a área selecionada

9 Posts
2 Usuários
0 Reactions
5,029 Visualizações
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Senhores, preciso de uma macro que ao ser acionada, imprima apenas a area selecionada da planilha.

Tentei da seguinte maneira mais dá o seguinte erro: "Erro de definição de aplicativo de de definição de objeto"
A macro que usei foi esta:

Range("B3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False

Mais sempre dá o mesmo erro...
Alguém tem alguma solução?

Forte abraço!
Wolney K.

 
Postado : 11/12/2012 7:56 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!
Tente adaptar...

Sub Imprimir()
Dim myrange As String
myrange = Cells(Rows.Count, 13).End(xlUp).Address
ActiveSheet.PageSetup.PrintArea = "$A$1:" & myrange
End Sub

Ou..
Fonte:
http://www.mrexcel.com/archive/VBA/15013d.html

Sub setprintarea()
ActiveSheet.PageSetup.PrintArea = "=" & ActiveSheet.UsedRange.Address
End Sub

Sub SetArea()
ActiveSheet.PageSetup.PrintArea = Range("A1", Range("M65536").End(xlUp)).Address
End Sub

Sub setprintarea()
Dim myrange As String
myrange = Cells(Rows.Count, 13).End(xlUp).Address
ActiveSheet.PageSetup.PrintArea = "$A$1:" & myrange
End Sub
 
Postado : 11/12/2012 8:01 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Alexandre, cara, desculpe, mais tentei de várias maneiras inserir o código que você me passou na minha planilha mais não consegui man...
É só copiar o código e atribuir ele á um botão?

Um detalhe: minha macro teria que clicar na célula B3 e selecionar toda á area com dados para a esquerda e toda á area com dados para baixo e então imprimir a seleção.
Faço isso porque abaixo da área escrita existem folhas que ficariam em branco na hora da impressão.

 
Postado : 11/12/2012 8:32 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Me mande seu arquivo compactado!!

Att

 
Postado : 11/12/2012 8:37 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Opa!
Desculpe a demora Alexandre! Esta correria esse final de ano.
Segue em anexo o meu exemplo compactado.
Se o amigo puder dar uma luz sobre oq está acontecendo, agradeço DEMAIS man!

Forte abraço!

 
Postado : 13/12/2012 7:32 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Meu problema é que eu não tenho como testar, nunca usei o Excel pra imprimir através de macros. (alias eu não o uso para NADA).
Tente os dois..depois retorne

Sub Imprimir()
    Application.ScreenUpdating = False
    Sheets(Array("Plan1")).PrintOut , , 1 ' Caso queira imprimir mais de uma guia
    Plan1.PrintOut , , 1
    Application.ScreenUpdating = True
   
End Sub

Sub testeAleVBA()
ActiveWindow.SelectedSheets.PrintOut
End Sub

você que que ele imprima, uma planilha ativa, um intervalo específico, esse intervalo pode ter sua matrix alterada de tamanho?

Att

 
Postado : 13/12/2012 7:51 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

É assim Alexandre: O mais lógico seria eu ajustar a quebra de página e criar uma macro simples para imprimir certo?
Mais o caso é que na planilha original que eu tenho aqui, a minha tabela é uma planilha dinâmica e depende do filtro que eu coloco nela, ela muda de tamanho.
Por isso que eu preciso criar algo que mande o Excel imprmir apenas aonde exista texto, deixando as páginas em branco de fora da impressão.

Na lógica, aquele meu primeiro código que eu te mandei lá em cima, deveria funcionar... mais não funciona!
Se você tiver uma outra solução que faça isso para mim que não seja uma macro...

Essas duas macros que vc me mandou não estão funfando...

 
Postado : 13/12/2012 8:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Teste assim..

Sub testPrint()

LastRow = Cells(Rows.Count, 2).End(xlUp).Row
P_Range = "B3:F" & LastRow
ActiveSheet.PageSetup.PrintArea = P_Range

End Sub

Att

 
Postado : 13/12/2012 9:45 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Ótimo Alexandre!
Dessa maneira ele sempre irá puxar a quebra de página para a última linha com dados, aí é só mandar imprimir!
Muito Obrigado man!

Um forte abraço meu amigo e tenha um Ótimo final de semana!

 
Postado : 13/12/2012 10:20 am