Ir ao conteúdo
  • Cadastre-se

Excel Excel - Macro para salvar em PDF


Posts recomendados

Estou com o problema da extensão saindo no nome do arquivo, mas no meu caso é uma macro no Word, já tentei algumas dicas que vi aqui e ainda não consegui, se alguém puder ajudar agradeço!

Segue o código que estou usando:

 

Sub Criar_PDF()

ActiveDocument.ExportAsFixedFormat OutputFileName:= _
ActiveDocument.Path & "\" & ActiveDocument.Name & ".pdf", ExportFormat:= _
wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
        
     MsgBox "Arquivo SALVO COM SUCESSO"

End Sub

Link para o comentário
Compartilhar em outros sites

  • mês depois...

Olá... tenho uma planilha para gerar recibos... criei um botão com uma macro que criei usando a feramenta "Gravar Macro" (não tenho experiencia em programar em VBA)... o problema é que ao clicar no botão que aciona a macro, ele sempre salva um arquivo com o mesmo nome, sobrescrevendo o arquivo anterior...

 

Sub criar_PDF()
'
' criar_PDF Macro
'

'
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "D:\OneDrive\CONTRATOS\Recibos\000001.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
End Sub

 

Gostaria que o nome do PDF fosse o número do recibo (tem uma celula que guarda essa informação).

Alguém sabe uma solução para isso?

Link para o comentário
Compartilhar em outros sites

@Allan Fabossi

 

Não precisa programar, mas vai ter que entrar no VBA  e alterar algumas linhas no código.

vou deixar o código pronto abaixo, mas vou explicar o que vai mudar.

 

Dim NumRecibo As String 'Vai declarar a variável dessa forma
NumRecibo = Sheets("Planilha1").Range("A1").Value 'Vai atribuir o valor conforme sua planilha e sua célula

 

e o caminho vai ficar com a sua variável dessa forma.

 

"D:\OneDrive\CONTRATOS\Recibos\" & NumRecibo & ".pdf"

 

Sub criar_PDF()
'
' criar_PDF Macro
'
Dim NumRecibo As String
NumRecibo = Sheets("Planilha1").Range("A1").Value

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "D:\OneDrive\CONTRATOS\Recibos\" & NumRecibo & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
End Sub

Qualquer Dúvida estou a disposição.

adicionado 3 minutos depois
Em 11/02/2020 às 10:02, GABRIEL DE OLIVEIRA COSTA disse:

@vics estou com problema parecido, tentei compilar o codigo mas ainda assim nao deu

jpr formulário de solicitação.7z 140 kB · 2 downloads

 

Desculpa a demora pra responder.

Olhei sua planilha, tem bastante conteúdo. onde está o erro exatamente, qual erro está aparecendo?

Link para o comentário
Compartilhar em outros sites

@Vics  Deu muito certo!! até fiz um acréscimo usando a intuição pra acrescentar o nome do cliente no nome do arquivo, e funcionou... MUITO OBRIGADO!!!!!!! o código ficou assim:

 

Dim NumRecibo As String
NumRecibo = Sheets("Recibo").Range("G2").Value

 

Dim ClienteRecibo As String
ClienteRecibo = Sheets("Recibo").Range("C6").Value

 

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "D:\OneDrive\CONTRATOS\Recibos\" & NumRecibo & " " & ClienteRecibo & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False

 

vou aproveitar pra tentar resolver outro "problema"... coloco entre aspas porque é um problema quase que estético, mas na hora de organizar os arquivos vai atrapalhar um pouco. O problema é o seguinte:

 

Na célula G2, de onde estou puxando o numero do recibo, estou usando 6 digitos... o primeiro recibo, por exemplo, foi o 000001... mas esses zeros são resultado de um formato personalizado que eu apliquei na celula, na verdade na celula estava digitado apenas "1"... na hora que salvei o arquivo o nome do pdf ficou "1 cliente", e não "000001 cliente". Tem como os "zeros aparentes" aparecerem no nome do arquivo salvo?

(OBS: eu até tentei utilizar formato de texto e digitar diretamente os zeros "000001", só que ai atrapalhou outra macro... tem um botão está limpando todo o recibo, e incrementando o numero do recibo em 1 unidade... nos testes que fiz, essa macro mudou o texto da celula de "00004" para "5", excluindo os zeros que eu tinha colocado manualmente).

 

desde já agrdeço a ajuda

Link para o comentário
Compartilhar em outros sites

@Allan Fabossi  Aqui Funcionou da seguinte forma:

 

A célula pode permanecer formatada como você especificou

image.png.7b4546a202d59a4ac732a6b0fa0d6be4.png

 

Na hora que buscar o número ele realmente buscaria apenas "12" nesse caso, mas tem um comando de formatar que muda isso.

Importante a variável ser uma string.

 

Se utilizar alguma operação matemática com com essa variável, aí sim vai dar erro. Esse é seu caso?

Caso sim, existe essas opções:

 

CInt (NumRecibo) 'Esse comando converte uma String para inteiro, assim pode fazer as operações matemáticas.
CStr (NumRecibo) 'Depois converta novamente para String com esse comando e formate usando o comando Format conforme código abaixo.

Caso não, segue o código abaixo.

Sub criar_PDF()
'
' criar_PDF Macro
'
Dim NumRecibo As String 'Variável declarada como string
NumRecibo = Sheets("Planilha1").Range("A1").Value 'Buscar valor na Célula
    
   NumRecibo = Format(NumRecibo, "000000") 'Formatar número (esse comando fez a diferença)

    MsgBox NumRecibo 'resultado da formatacação
    
    'Salvar PDF
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "D:\OneDrive\CONTRATOS\Recibos\" & NumRecibo & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
        
    Range("A1").Value = NumRecibo + 1 'Incrementar 1

End Sub

Espero ter Ajudado,

Qualquer dúvida estou a disposição.

Link para o comentário
Compartilhar em outros sites

  • 5 meses depois...

Olá boa tarde,

 

Eu preciso criar uma macro que salve a informação de duas abas diferentes da mesma planilha em um único PDF.

Eu comecei utilizando a macro abaixo, mas não sei como faço para acrescentar a informação da segunda aba da planilha, alguém consegue me ajudar?

 

Sub SalvarIntervaloPDF()

Dim LocalPDF As String

Dim intervalo As Range

LocalPDF = "W:\14. Projeto Gestão à Vista\02. Banco de Dados\06. Aging List\Nova Proposta\02. Aging List\Aging List.pdf"

Set intervalo = Sheets("Aging List").Range("B2:AJ84")

intervalo.ExportAsFixedFormat Type:=xlTypePDF, _

Filename:=LocalPDF

End Sub

Link para o comentário
Compartilhar em outros sites

Em 22/09/2020 às 08:37, Aline Ramos Borges disse:

Eu preciso criar uma macro que salve a informação de duas abas diferentes da mesma planilha em um único PDF.

 

Olá @Aline Ramos Borges,

 

Basta que você utilize o código abaixo:

Sub Macro1()
'
' Macro1 Macro
'

'
    ThisWorkbook.Sheets(Array("Planilha1", "Planilha2")).Select 'Aqui você coloca o nome das planilhas que você vai salvar em PDF
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\LOCAL\DO ARQUIVO\Desktop\PLANILHAS.pdf", Quality:=xlQualityStandard, _ 'NÃO ESQUEÇA DE ALTERAR O LOCAL
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
        
End Sub

 

Deixo também a planilha que usei de exemplo.

PLANILHAS.rar

 

Fique a vontade para voltar a perguntar, e se já foi suficiente para sanar sua dúvida, lembre-se de marcar o tópico como Resolvido.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...