Notifications
Clear all

Macro para imprimir em PDF

27 Posts
3 Usuários
0 Reactions
3,454 Visualizações
(@jdutra6)
Posts: 20
Eminent Member
Topic starter
 

Galera, boa tarde.

Estou com uma macro aqui, no entanto está dando erro constantemente, já tentei várias mudanças, porém nenhum resultado positivo. A macro consiste na impressão em PDF de algumas abas, com o um nome específico, se possível gostaria também que qualquer linha em branco após a última linha preenchida fosse excluida para que na hora da impressão a mesma saia correta. Segue Macro:

Sub PDTVS()
'
' PDTVS Macro
'

'
    Sheets("Fundam").Select
    Rows("85:85").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    Sheets("Básico").Select
    Rows("81:81").Select
    Range("G81").Activate
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    Sheets("Senior").Select
    ActiveSheet.Unprotect
    ActiveWindow.SmallScroll Down:=30
    Rows("89:89").Select
    Range("H89").Activate
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    Sheets("Master").Select
    ActiveSheet.Unprotect
    ActiveWindow.SmallScroll Down:=27
    Rows("87:87").Select
    Range("H87").Activate
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    Dim ws As Worksheet
  For Each ws In Worksheets
   If ws.Name = "Fundam" Or ws.Name = "Básico" Or ws.Name = "Senior" Or ws.Name = "Master" Then
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"w:RelatórioRelatório " & PDTS & SERIE & F & 5005 & FUNDAMENTAL & (V25) & - & BONUS & - & ws.Name & Format(Date, " dd.mm.yyyy") & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Vale ressaltar que a parte superior é apenas para a exclusão das linhas sobressalentes.

Agradeço desde já, tenham todos uma boa tarde!!! :D :D :D :D :D :D

 
Postado : 09/05/2016 11:29 am
(@jdutra6)
Posts: 20
Eminent Member
Topic starter
 

E Marcelo muito obrigado por disponibilizar seu tempo para me ajudar, agradeço mesmo, de coração.

 
Postado : 12/05/2016 5:05 am
(@mprudencio)
Posts: 2749
Famed Member
 

Não, será gerado o PDF dela toda da coluna A e linha 1 até o fim, podendo ser também a partir da linha 2 e coluna A, da no mesmo.

Essa é a questao faz sim diferença....

Principalmente pq vc quer limitar a criação do PDF na ultima linha preenchida.

Seu arquivo é um tanto confuso, pois tem varias tabelas, não faz muito sentido criar um unico pdf...

Verifique se é isso mesmo.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 12/05/2016 7:19 am
(@jdutra6)
Posts: 20
Eminent Member
Topic starter
 

Prudencio, é isso sim, por mais que seja confuso, todos utilizam no PC, dá pra dar Zoom sem perder a qualidade, já que faz diferena, melhor por na linha 1, pois preciso de tudo que está contido ai dentro, e preciso gerar um PDF Single page, mesmo que fique feio.

Mais uma vez, obrigado Prudencio, muito obrigado mesmo.

 
Postado : 12/05/2016 7:34 am
(@jdutra6)
Posts: 20
Eminent Member
Topic starter
 

UP!

 
Postado : 16/05/2016 5:25 am
(@mprudencio)
Posts: 2749
Famed Member
 

E todo o arquivo em 01 pagina apenas, indpendente do numero de linhas?

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 16/05/2016 7:17 am
(@jdutra6)
Posts: 20
Eminent Member
Topic starter
 

Sim, cada aba em um pdf diferente, sendo todo o conteudo da aba nele. Ex: Um PDF para a aba básico onde tudo que tem na aba esteja dentro do PDF (Single Page). Obrigado Marcelo.

 
Postado : 16/05/2016 12:24 pm
(@jdutra6)
Posts: 20
Eminent Member
Topic starter
 

UP!

 
Postado : 17/05/2016 10:44 am
(@jdutra6)
Posts: 20
Eminent Member
Topic starter
 

UP!

 
Postado : 18/05/2016 5:26 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eu sinceramente, ainda não entendi. Pede impressão em Retrato mas mostra um "desenho" em Paisagem, dis nome da pasta mas não localizei o que e isso.

Sugestão:
Utilize o gravador de macros, com ele "ligado" formate suas abas conforme deseja a impressão/pdf. Mande o arquivo com a macro gravada e alguns registros, que sejam representativos do layout de suas abas/pasta de trabalho.
Substitua nomes/dados/valores por ficticios se necessario

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/05/2016 7:01 am
(@jdutra6)
Posts: 20
Eminent Member
Topic starter
 

Reinaldo, bom dia.

Fiz a "macro", no caso de apenas uma aba. Segue.

Obrigado desculpa o incômodo.

Nota, o nome do arquivo pdf é explicativo.

 
Postado : 18/05/2016 8:18 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja se está em linha com o esperado

Sub PDTVS()
Dim ws As Worksheet
Dim nArquivo() As String, sFile As String
'Separa o nome do arquivo de sua extensão
nArquivo = Split(ThisWorkbook.Name, ".")
'Inicia o loop pelas planilhas do workbook
For Each ws In Worksheets
    'Define as planilhas que serão impressas em pdf
    If ws.Name = "Fundam" Or ws.Name = "Básico" Or ws.Name = "Senior" Or ws.Name = "Master" Then
        ws.Select
        'Monta o nome do arquivo para gravar
        sFile = "PDTS - " & nArquivo(0) & " - " & ws.Name & " - V25 - BONUS - " & VBA.Format(Date, "dd.mm.yyyy") & ".pdf"
        'Define a ultima linhada coluna "D" que tem dados
        UltimaLinha = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
        'Altere aqui sua range
        Range("A1:AT" & UltimaLinha).Select
        'configura pagina para impressão
        ActiveSheet.PageSetup.PrintArea = "$A$1:$AT" & UltimaLinha
        With ActiveSheet.PageSetup
            .LeftMargin = Application.InchesToPoints(0.511811024)
            .RightMargin = Application.InchesToPoints(0.511811024)
            .TopMargin = Application.InchesToPoints(0.787401575)
            .BottomMargin = Application.InchesToPoints(0.787401575)
            .HeaderMargin = Application.InchesToPoints(0.31496062)
            .FooterMargin = Application.InchesToPoints(0.31496062)
            .PrintHeadings = False
            .PrintGridlines = False
            .PrintComments = xlPrintNoComments
            .Orientation = xlLandscape
            .PaperSize = xlPaperLetter
            .FirstPageNumber = xlAutomatic
            .Order = xlDownThenOver
            .FitToPagesWide = 1
            .FitToPagesTall = 1
            .PrintErrors = xlPrintErrorsDisplayed
            .OddAndEvenPagesHeaderFooter = False
        End With
        Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "w:RelatórioRelatório " & sFile, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    End If
Next
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 19/05/2016 8:35 am
(@jdutra6)
Posts: 20
Eminent Member
Topic starter
 

Namoral Reinaldo, fiquei todo arrepiado hahahahaha. Então fiz algumas modificações, e ficou PERFEITA! Te agradeço demais, por cada segundo que você usou tentando ajudar, tarefa um pouco difícil de explicar, mas que foi solucionada com êxito .

Sub PDTVS()
Dim ws As Worksheet
Dim nArquivo() As String, sFile As String
'Separa o nome do arquivo de sua extensão
nArquivo = Split(ActiveWorkbook.Name, ".")
'Inicia o loop pelas planilhas do workbook
For Each ws In Worksheets
    'Define as planilhas que serão impressas em pdf
    If ws.Name = "Fundam" Or ws.Name = "Básico" Or ws.Name = "Senior" Or ws.Name = "Master" Then
        ws.Select
        'Monta o nome do arquivo para gravar
        sFile = "PDTS - " & nArquivo(0) & " - " & ws.Name & " - V25 - BONUS - " & VBA.Format(Date, "dd.mm.yyyy") & ".pdf"
        'Define a ultima linhada coluna "D" que tem dados
        UltimaLinha = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
        'Altere aqui sua range
        Range("A1:AT" & UltimaLinha).Select
        'configura pagina para impressão
        ActiveSheet.PageSetup.PrintArea = "$A$1:$AT" & UltimaLinha
        With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0.511811024)
        .RightMargin = Application.InchesToPoints(0.511811024)
        .TopMargin = Application.InchesToPoints(0.787401575)
        .BottomMargin = Application.InchesToPoints(0.787401575)
        .HeaderMargin = Application.InchesToPoints(0.31496062)
        .FooterMargin = Application.InchesToPoints(0.31496062)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperLetter
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
      
        End With
        Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:Usersjdutra6DesktopBasesPDTSRelatório " & sFile, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    End If
Next
End Sub

 
Postado : 19/05/2016 12:41 pm
Página 2 / 2