Notifications
Clear all

Salvar várias Sheets em um só arquivo PDF

9 Posts
4 Usuários
0 Reactions
2,344 Visualizações
(@mprudencio)
Posts: 0
New Member
Topic starter
 

Ate onde sei nao da pra juntar as abas em unico pdf pelo menos nao vi nada do tipo

 
Postado : 20/09/2016 5:22 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tem sim como fazer de acordo com o link abaixo dado como resolvido, não testei, mas se pesquisar encontrara vários links a respeito, veja se consegue ajustar :

Solved - convert it to save multiple sheets ( 2 out of 6 in this case) as one pdf file.
select multiple sheets to save as a pdf file in Excel VBA
https://www.experts-exchange.com/questi ... er40358734

[]s

 
Postado : 20/09/2016 5:50 am
(@shroeder)
Posts: 0
New Member
 

Obrigado.

Tentei esse código, mas exporta todas as abas ativas.

Eu apenas quero exportar as que selecionar no UserForm.

Cumps

 
Postado : 20/09/2016 7:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Mensagem Enviado 20 Set 2016, 06:55 por Shroeder
Usei um UserForm e resolvi com o seguinte código:

Agora estou a tentar fazer o mesmo com a possibilidade de guardar em PDF, mas não estou a conseguir guardar apenas as abas selecionadas no userform. A formula a baixo, selecionada todas as abas da planilha.

Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Sheets("Folha1").Select

ThisWorkbook.Sheets.Select
Dim vPDFPath As Variant

Do

bRestart = False
vPDFPath = Application.GetSaveAsFilename(, "PDF Files (*.pdf), *.pdf")
If CStr(vPDFPath) = "False" Then
Exit Sub
Else
lAppSep = InStrRev(vPDFPath, Application.PathSeparator)
End If

If UCase(Dir(vPDFPath)) = UCase(Right(vPDFPath, Len(vPDFPath) - lAppSep)) Then
Select Case MsgBox("O arquivo já existe. Deseja substituí-lo?", _
vbYesNoCancel, "ATENÇÃO!")
Case vbYes
Kill vPDFPath
Case vbNo
bRestart = True
Case vbCancel
Sheets("Folha1").Select
Exit Sub
End Select
End If
Loop Until bRestart = False
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=vPDFPath, _
OpenAfterPublish:=True

Sheets("Folha1").Select

MsgBox "Ficheiro Criado com Sucesso"

End Sub

O problema está em "ThisWorkbook.Sheets.Select" mas não estou a conseguir resolver. Se colocar uma condição por cada folha, vai fazer um pdf por cada também, e o que eu quero é um único pdf.

Obrigado.

Shroeder, dividi seu tópico por entender se tratarem de assuntos diferentes, um é para Imprimir e este para salvar como PDF, assim deixamos o forum mais organizado, quando tratar de questões diferentes procure sempre abrir tópicos separados.

 
Postado : 20/09/2016 4:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Quanto a salvar abas em somente um arquivo PDF, vi o modelo que anexou, mas o mesmo não tem nenhuma rotina nem formulários, então fiz um exemplo baseado na dica do site abaixo :

How do I save multiple sheets (in the same workbook) to a single output PDF?
https://danwagner.co/how-do-i-save-mult ... ingle-pdf/

Salvar varias abas em um único arquivo PDF

Baixe o modelo, lembre-se de ajustar o caminho a ser salvo na linha, faça o teste e veja se é isto :
'Ajuste o caminho da sua Pasta
strFilepath = "C:SeuDiretorio"

[]s

 
Postado : 20/09/2016 5:05 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

em adicional veja no topico aqui do forum http://www.planilhando.com.br/forum/viewtopic.php?f=10&t=17119&hilit=pdf&start=10
A rotina "pega" as planilhas selecinadas em um listbox e imprime num unico PDF

Private Sub CommandButton1_Click()
Dim i As Integer, iArr As Integer
Dim Nome_Arquivo As String
Dim myArray() As Variant
iArr = 0
'Conta os itens do listbox
For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) Then
        ReDim Preserve myArray(iArr)
        myArray(iArr) = ListBox1.List(i)
        iArr = iArr + 1
    End If
Next
'Nome do Arquivo será primeira planilha selecionada
Nome_Arquivo = "C:Relatórios" & myArray(0) & ".pdf"
Sheets(myArray).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Nome_Arquivo, Quality _
        :=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
Sheets(1).Select
End Sub
 
Postado : 20/09/2016 6:57 pm
(@shroeder)
Posts: 0
New Member
 

Oi,

Retomando o assunto. Já consegui quase tudo o que queria.

Contudo, quando faço gravar pdf e depois decido cancelar, ele cria um ficheiro na mesma com o nome "FALSO".

Não entendo onde está o erro.

Planilha em anexo.

Obrigado

 
Postado : 25/09/2016 3:27 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Retire as aspas da condição False na linha :

If CStr(vPDFPath) = False Then

[]s

 
Postado : 25/09/2016 9:08 am
 jrm
(@jrm)
Posts: 34
Trusted Member
 

Boa noite

Também estou a necessitar da mesma funcionalidade mas não estou a conseguir implementar, no meu caso pretendo selecionar todos os Sheets que que o nome comece por "M" e guarda-los num único PDF, podem ajudar sff.
não sei como adaptar as macros que estão neste tópico para selecionar todas as folhas que o nome começa por "m" e guardar o intervalo A1:w:45 de todas as folhas num único ficheiro PDF.
fico muito grato pela vossa ajuda.
Abraço

 
Postado : 28/02/2017 2:51 pm