Página 1 de 1

Correção de código de conversão para PDF

Enviado: 25 Jul 2018 às 17:29
por SandroLima
Boa tarde, amigos forumeiros

Com a ajuda de um dos colegas do fórum há um tempinho atrás foi construído esse código que converte uma imagem em PDF.
Public Sub SALVAR_PDF()
Dim pdfIn As String
Dim pdfStamp As String
Dim pdfOut As String
Dim Pdtk As String
Dim strExec As String

VBA.ChDir ThisWorkbook.Path & "\"

On Error GoTo trataErro

Application.ScreenUpdating = False

With WS_Recibo

Pdtk = "PdfTk.exe"
pdfIn = "RECIBO.pdf"
pdfStamp = "MARCA D'ÁGUA (RECIBO).pdf"

'pdfOut = "RECIBO-" & .Range("I11").Value & _
'"_" & Format(Now, "dd_mm_yy_hh_mm_ss") & ".pdf"
pdfOut = Format(Now, "yyyy.mm.dd") & " " & UCase(.Range("G17").Value) & " (RECIBO)" & ".pdf"

.PageSetup.PrintArea = ""
.PageSetup.PrintArea = .Range("B8:Q49").Address(External:=True)

.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\RECIBO.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

.PageSetup.PrintArea = ""

End With

strExec = Chr(34) & Chr(34) & Pdtk & Chr(34) & " """ & pdfIn & """ background " & Chr(34) & _
pdfStamp & Chr(34) & " output """ & pdfOut & """" ' Estrut. do comando

Call VBA.Shell("cmd.exe /C " & strExec, vbMinimizedNoFocus) ' cmd chama o utilit.que converte

Application.Wait (Now + TimeValue("00:00:06")) ' aguarda 6 seg.

If Not Dir(pdfOut) = "" Then ' verf. se o arquivo existe
Call VBA.Shell("cmd.exe /C Start " & pdfOut, vbMinimizedNoFocus) 'cmd abre o pdf convertido
End If

trataErro:

Application.ScreenUpdating = True

End Sub

Public Sub JanelaImpressao()
Application.Dialogs(xlDialogPrint).Show
End Sub
Recentemente precisei fazer uma alteração na estrutura do registro de gravação (podem ver como era na parte que está comentada e como ficou logo abaixo).
Até aí tudo bem... ele executa a rotina normalmente. Inclusive converte o PDF e o salva na pasta.
O problema surge na hora de localizar o arquivo agora... exatamente na linha Call... antes do End If.
Ele apresenta uma msg de erro alertando que o Windows não pode localizar o arquivo (que aqui no caso começa com a data.
"O Windows não pôde encontrar o arquivo '2018.07.25'. Certifique-se de que o nome foi digitado corretamente e tente novamente."
Essa data aí é só um exemplo... refere-se ao início do nome de gravação.
E com isso ele deixa de fazer o restante da atividade que no caso era abrir o PDF convertido.

Podem me ajudar a consertar isso?

E indo mais além... na atual estrutura do código ele salva o PDF na mesma pasta onde se encontra a planilha e eu gostaria q o PDF convertido fosse salvo na pasta C:\Empresa\Contabilidade\Recibos Emitidos.
O que eu deveria acrescentar/alterar no código?

Muito obrigado a quem puder colaborar.

Re: Ajuda para corrigir código de conversão PDF

Enviado: 26 Jul 2018 às 09:55
por SandroLima
Bom dia, colegas forumeiros.

Alguém saberia me ajudar a corrigir o código acima?

Re: Ajuda para corrigir código de conversão PDF

Enviado: 27 Jul 2018 às 08:59
por SandroLima
Bom dia, Amigos forumeiros.

Alguém saberia me ajudar a corrigir esse código?

Correção de código para conversão em PDF

Enviado: 02 Ago 2018 às 16:07
por SandroLima
Boa tarde, colegas do fórum

Ainda não consegui resolver sozinho a correção desse código e por isso venho pedir ajuda de vcs .

Estou anexando os arquivos utilizados... os anexos de imagem são apenas exemplos para teste.

Estou mandando a planilha com o código original na forma de comentário e na forma modificada (na estrutura desejada para o nome final do arquivo) onde apresenta o erro e não abre o PDF ao final da rotina.

Adicionalmente à correção do código gostaria de implementar a informação do caminho para salvar o PDF em que foi adicionada a imagem como marca d'água (C:\EMPRESA\EMISSOR DE RECIBOS\RECIBOS EMITIDOS\).

O outro arquivo (PDF) gerado sem a marca d'água continua com a rotina existente e salva no mesmo endereço da pasta de trabalho (como está atualmente).

Seguem arquivos em anexo.

Obrigado antecipadamente aos que se dispuserem a ajudar.