Notifications
Clear all

Salvar em PDF,somente a area de impressão

7 Posts
3 Usuários
0 Reactions
1,912 Visualizações
(@astrid)
Posts: 6
Active Member
Topic starter
 

Bom dia
Estou precisando de uma grande ajuda, tenho uma planilha no Excel 2007, que contem vários dados e quebras de pagina, preciso de uma macro que salva em PDF somente os dados da área de impressão e não toda a planilha. Tenho uma macro que eu uso, mas ela salva em PDF toda a planilha. Segue exemplo abaixo: Podem me ajudar?

Sub SalvaPDF()
Dim Pasta As String, MyPath As String
MyPath = "C:Documents and SettingsAstridDesktopLANÇAMENTO DE PRODUÇÃO HORA"
arq = Pasta & "LANÇAMENTO DE PRODUÇÃO HORA " & ActiveSheet.Range("c4").Value & " " & ActiveSheet.Range("d9").Value _
& " " & " " & " .pdf"
If (Dir(MyPath & "/" & Pasta, vbDirectory) = "") Then
MsgBox "Diretório - " & MyPath & Pasta & " - Não encontrado"
MkDir (MyPath & Pasta)
End If
If (Dir(Arquivo) <> "") Then
Kill Arquivo
End If
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
MyPath & "" & Pasta & "" & arq, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
 
Postado : 21/05/2013 7:43 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Astrid,

Boa Noite!

Para imprimir em PDF somente a área de impressão definida por você, você deve instalar na sua máquina o PDF Creator, por exemplo. Esse software, cria uma impressora PDF Creator em, seu micro e aí você grava, normalmente uma macro que imprimia nessa impressora.

Nesse site, você consegue baixar gratuitamente o PDF Creator: pdfcreator.softonic.com.br/‎

 
Postado : 21/05/2013 3:54 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

8-) ............................

Sub Caminho_Nao_Curto()

    Dim fName As String
    
    fName = Application.GetSaveAsFilename(fileFilter:="PDF Files (*.pdf), *.pdf")
 
    Worksheets("Resultados").Activate
    Range("A1:C39").Select
    ActiveSheet.PageSetup.PrintArea = "$A$1:$C$39"
    Range("A1").Select
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName, IgnorePrintAreas:=False, OpenAfterPublish:=True
    
End Sub
 
Postado : 21/05/2013 4:32 pm
(@astrid)
Posts: 6
Active Member
Topic starter
 

Alexandre, bom dia

Este código resolve parte do meu problema, teria como incrementa-lo para que quando eu executar a macro, salvar direto em uma pasta de determinado diretório com o nome que seria estabelecido através de duas células e uma delas contendo data e no final gerasse um msgbox dizendo que o arquivo foi salvo com sucesso. Exemplo do que uso atualmente e não conseguia salvar somente a área de impressão, é possível unir os dois códigos?
Sub SalvaPDF()
Dim Pasta As String, MyPath As String
MyPath = "C:Documents and SettingsAstridDesktopLANÇAMENTO DE PRODUÇÃO HORA"
arq = Pasta & "LANÇAMENTO DE PRODUÇÃO HORA " & ActiveSheet.Range("c4").Value & " " & ActiveSheet.Range("d9").Value _
& " " & " " & " .pdf"
If (Dir(MyPath & "/" & Pasta, vbDirectory) = "") Then
MsgBox "Diretório - " & MyPath & Pasta & " - Não encontrado"
MkDir (MyPath & Pasta)
End If
If (Dir(Arquivo) <> "") Then
Kill Arquivo
End If
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
MyPath & "" & Pasta & "" & arq, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub

 
Postado : 22/05/2013 9:08 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Astrid, basicamente você já tem estas instruções nesta rotina, é spo ajustar:

"salvar direto em uma pasta de determinado diretório"
'Na instrução abaixo, você já definiu o Diretório
MyPath = "C:Documents and SettingsAstridDesktopLANÇAMENTO DE PRODUÇÃO HORA"

"com o nome que seria estabelecido através de duas células e uma delas contendo data"
Tirando a Variável Pasta, que não identifiquei de onde a mesma está sendo alimentada, seria o caso só de ajustar o nome do arquivo "LANÇAMENTO DE PRODUÇÃO HORA ", trocando por outra instrução igual a que já tem nesta linha:

arq = Pasta & "LANÇAMENTO DE PRODUÇÃO HORA " & ActiveSheet.Range("c4").Value & " " & ActiveSheet.Range("d9").Value _
& " " & " " & " .pdf"

Supondo que o nome do arquivo estaria em "E1", ficaria :
arq = Pasta & ActiveSheet.Range("E1").Value & ActiveSheet.Range("c4").Value & " " & ActiveSheet.Range("d9").Value _
& " " & " " & " .pdf"

Não sei quais valores tem em C4 e D9, mas supondo que tenha a data, você pode formata-la tambem da maneira que quiser ou ao inves de ser explicita na linha quanto aos endereços, pode ainda definir outras Variáveis, de uma olhada no link abaixo, tem uma rotina com algumas Variáveis:

viewtopic.php?f=10&t=6449

[]s

 
Postado : 22/05/2013 10:54 am
(@astrid)
Posts: 6
Active Member
Topic starter
 

Bom Dia a Todos!
Fiz as alterações conforme as minhas necessidades, agora está funcionando exatamente como queria, segue a baixo o código modificado. Ficou assim:

Sub Salvar_impressão()

Dim Pasta As String, MyPath As String

Worksheets("TABELA DIN 2").Activate
Range("B1:AF34").Select
ActiveSheet.PageSetup.PrintArea = "$B$1:$AF$34"
Range("b1").Select

MyPath = "C:Documents and SettingsAstridDesktopLANÇAMENTO DE PRODUÇÃO HORA"
arq = Pasta & ActiveSheet.Range("c1").Value & ActiveSheet.Range("c4").Value & " " & ActiveSheet.Range("d9").Value _
& " " & " " & " .pdf"

If (Dir(MyPath & "/" & Pasta, vbDirectory) = "") Then
MsgBox "Diretório - " & MyPath & Pasta & " - Não encontrado"

MkDir (MyPath & Pasta)
End If

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
MyPath & "" & Pasta & "" & arq, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Sheets("Menu2").Select
Range("O5").Select

MsgBox "A produção foi salva com sucesso", vbInformation, "CONFIRMADO"

End Sub

 
Postado : 23/05/2013 7:44 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vocês tentaram não querer mais salvar e cancelar a impressão ?

Pois bem nos testes que eu estava fazendo, com não queria toda hora ficar imprimindo cancelei a impressão, mas mesmo assim ele imprime com o titulo de "False".

Temos que acrescentar alguma linha ao codigo para que quando cancelarmos ele não imprima mais?

Sub print_pdf()
Dim fName As String

fName = Application.GetSaveAsFilename(fileFilter:="PDF Files (*.pdf), *.pdf")

Worksheets("PEDIDO").Activate
Range("D2:AL103").Select
ActiveSheet.PageSetup.PrintArea = "$D$2:$AL$103"
Range("A1").Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

 
Postado : 07/02/2014 9:33 am