Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Macro que define propriedades de impressão

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
thiago.barreto
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Qui Abr 25, 2019 4:39 pm

Macro que define propriedades de impressão

Mensagem por thiago.barreto »

Eaí Galera, beleza?

Estou com uma planilha que gera relatórios que necessitam de algumas propriedades a serem definidas no código de macro para evitar erros de terceiros na hora da impressão.

O que necessito é que a macro imprima apenas as células selecionadas, e para isso já encontrei o código abaixo:

Código: Selecionar todos

Selection.PrintOut Copies:=1, Collate:=True
No entanto, preciso também que a impressão seja feito no modo paisagem e que todas as colunas selecionadas se encaixem em uma única página. Gostaria de colocar isso diretamente na macro para que o usuário não precise fazer essas alterações.

A princípio seria isso, mas se possível, por curiosidade, gostaria de saber se existe código para alterar também as outras propriedades, como margem, definição de impressora, etc...

É isso, grande Abraço!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 206
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Macro que define propriedades de impressão

Mensagem por PRMPOKER »

Prezado thiago.barreto, tudo bem?

Veja o código abaixo:

Código: Selecionar todos

Sub Organizando_personalizacao_impressao()
Dim BotaoLinha As Integer, ImpData, CopiaW, LRodape, MontaRodape
Dim vPaginas As Integer, vUltimaColuna
vUltimaColuna = Application.CountA(ActiveSheet.Range("1:1"))
BotaoLinha = Application.CountA(ActiveSheet.Range("A:A"))

'observe nesta condição, se os dados for maior que coluna(6) imprime retrato, senão, paisagem
If vUltimaColuna >= 6 Then
vPaginas = 1 '1=xlPortrait (retrato)
Else
vPaginas = 2 '2=xlLandscape (paisagem)
End If

'============= personalize a impressao de suas páginas cabeçalhos e rodapés ==========

MontaRodape = "&8" & Chr(34) & "Excel VBA" & Chr(34) & _
" Reservado área de código dos Alunos SKY-XL-EVES®," & Chr(10) _
& "Fone # 1-800-XL-EVES®" & Chr(10) & "Sorria, você esta em questão!!!"
ImpData = Application.Text(Now(), "dd/mm/yyyy HH:mm:ss")
CopiaW = Chr(169) & Year(Now())
LRodape = "&8" & "*=Saberexcel" & Chr(10) & CopiaW & _
" Confidendencial Propridades dos Alunos Saberexcel"

Application.StatusBar = "Acertando um sistema de página"
ActiveSheet.Range(Cells(2, 1), Cells(BotaoLinha, vUltimaColuna)).Select

With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "&""Arial,Bold""ABCDEFG Agenda Telefonica" _
& Chr(10) & SpecialMsg
.RightHeader = ImpData
.LeftFooter = LRodape
.CenterFooter = "Pagina &P of &N"
.RightFooter = MontaRodape
.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
.PrintNotes = False
.CenterHorizontally = True
.CenterVertically = False
.Orientation = vPaginas 'Landscape or Portrait(Paisagem e retrato)
.Draft = False
' .PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1 'força uma largura de página
.FitToPagesTall = False 'Retorna ou define a altura, em número de páginas, pela qual a planilha será dimensionada quando impressa. Só se aplica a 'planilhas.
End With

ActiveWorkbook.Save
Application.StatusBar =""
[H1].Select 'saida de macro

End Sub
Você pode controlar quase todas as propriedades de impressão sim. Avalie e adapte à sua realidade.

Fonte aqui: http://www.microsoftexcel.com.br/index. ... essao.html

Atenciosamente.


Responder