Notifications
Clear all

Salvar várias Sheets em um só arquivo PDF

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

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

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 : 20/09/2016 5:22 am
Fernando Fernandes
(@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

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

 
Postado : 20/09/2016 5:50 am
(@shroeder)
Posts: 57
Trusted 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
Fernando Fernandes
(@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.

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

 
Postado : 20/09/2016 4:59 pm
Fernando Fernandes
(@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

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

 
Postado : 20/09/2016 5:05 pm
Fernando Fernandes
(@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

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

 
Postado : 20/09/2016 6:57 pm
(@shroeder)
Posts: 57
Trusted 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
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

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

If CStr(vPDFPath) = False Then

[]s

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

 
Postado : 25/09/2016 9:08 am
 jrm
(@jrm)
Posts: 34
Eminent 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