Notifications
Clear all

Macro Gera PDF não funciona corretamente

11 Posts
2 Usuários
3 Reactions
1,337 Visualizações
(@sandrolima)
Posts: 0
Estimable Member
Topic starter
 

Boa noite, colaboradores do fórum.

Venho pedir ajuda com uma macro que parou de funcionar como antes

Única alteração recente que foi realizada foi a troca de Excel 2013 para o 2019.

A Macro gerava o PDF e abria ele ao final... e agora não o faz mais.

Não entendo pq não está funcionando... executando passo a passo dá para ver que a macro nomeia a variável pdfOut como se estivesse funcionando normalmente... mas no final não gera o arquivo na pasta e muito menos o abre.

Uso bastante essa funcionalidade e peço ajuda encarecidamente a vocês.

 
Postado : 25/03/2021 1:06 am
(@teleguiado)
Posts: 142
Estimable Member
 

@sandrolima

Veja se existe o programa PdfTk.exe instalado. Aqui não deu erro, porem como não tenho esse arquivo não sei se a parte final do seu código esta funcionando normalmente. Se mudar OpenAfterPublish:=False para OpenAfterPublish:=true ele abre o pdf no final porem o arquivo seria o Recibo.pdf.

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 25/03/2021 9:23 am
SandroLima reacted
(@sandrolima)
Posts: 0
Estimable Member
Topic starter
 

Bom dia e obrigado pela atenção, @Teleguiado.

O programa PdfTk.exe está instalado e na mesma pasta onde encontra a planilha como deve ser para funcionar.

Conversei com o técnico que fez o reparo do pc antes de parar de funcionar...

Ele disse que as únicas coisas que foram alteradas foram o Windows (passou do 8 para o 10) e o Office (que passou de 2016 para 2019).

Tenho um note com o Windows 10 e Office 2016 e lá a macro continua normal.

O curioso é que a macro roda normalmente aqui... mas quando procuro o arquivo na pasta destino ele não está lá e em nenhuma outra pasta.

O arquivo que recebe o nome "RECIBO.pdf" (pdfIn) aparece na pasta normalmente mas o pdfOut não é gerado.

Penso que o problema está nessa parte do código e tenho que fazer alguma adequação:

    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
        ThisWorkbook.FollowHyperlink pdfOut
    
    Else
        
        MsgBox "O Arquivo não existe"
        
    End If

Acrescentei ao código as linhas:

    Else
    
        MsgBox "O Arquivo não existe"
    
    End If

E ele retornou a msg de que o "O Arquivo não existe".

De que maneira posso contornar isso?

O tópico continua aberto se alguém souber o que posso fazer peço encarecidamente a ajuda de vcs. Uso muito essa funcionalidade.

 
Postado : 25/03/2021 9:35 am
(@teleguiado)
Posts: 142
Estimable Member
 

@sandrolima

Uma coisa que percebi aqui é que o nome do arquivo a ser aberto que esta na variável pdfOut não pode conter espaço pois o shell nao reconhece o espaço.

Tente alterar a linha abaixo

pdfOut = Range("PlanRecibo_Ano").Value & "." & Mes & "." & Format(Range("PlanRecibo_Dia").Value, "00") & "_" & UCase(.Range("PlanRecibo_Paciente").Value) & "_(RECIBO)" & ".pdf"
        nomepasta = ThisWorkbook.Path

 

Outra coisa o PlanRecibo_Paciente não pode ter espaço também.

 

 

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 25/03/2021 12:51 pm
SandroLima reacted
(@teleguiado)
Posts: 142
Estimable Member
 

@sandrolima

Altere o código.

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

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 25/03/2021 1:42 pm
SandroLima reacted
(@sandrolima)
Posts: 0
Estimable Member
Topic starter
 

Obrigado pela grande ajuda, Teleguiado.

Fiz mais alguns testes aqui e identifiquei em qual momento do código está acontecendo a falha mas ainda não sei como corrigir. Espero que possam me orientar.

A falha não está relacionada a versão do Windows ou à alteração da versão do office.

Foi feita no PC a instalação de um SSD (Diretório C:) e a pasta do Google Drive se encontra instalada nele.
Quando copio a pasta com os arquivos para a área de trabalho cujos arquivos estão no Diretório D: a macro funciona adequadamente gerando o pdfOut e abrindo o PDF.

A falha está na linha:

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

Quando rodo a macro da planilha que se encontra em uma pasta da área de trabalho (D:) a rotina acontece normalmente.

Porém quando rodo a macro da planilha que encontra em uma pasta do Google Drive (C:) a macro roda mas não fera e não abre o arquivo pdfOut.

Sabem como deveria proceder para voltar a funcionar normalmente mantendo a planilha na pasta do Google Drive?

Este post foi modificado 4 anos atrás por SandroLima
 
Postado : 25/03/2021 2:58 pm
(@teleguiado)
Posts: 142
Estimable Member
 

@sandrolima

Aqui deu erro na pasta do drive pois o nome contem espaço "Google drive" teria que ser "Google_drive" para não dar erro na pasta. Teria que ver algum outro método para abrir o pdf.

 

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 25/03/2021 3:13 pm
(@sandrolima)
Posts: 0
Estimable Member
Topic starter
 

Acredito não ser esse o erro.

Veja as duas pastas da imagem anexa

 

>>>>A pasta da esquerda ("TESTE EMISSOR") está na área de trabalho e armazenada no Diretório D:

- Aqui a macro executa normalmente

- Gera o PDF com a "estampa" (pdfOut) e depois o abre

 

>>>> A pasta da direita ("Google Drive") também está na área de trabalho e armazenada no Diretório C:

- Aqui a macro aparentemente executa normalmente, porém,

- Não Gera o PDF com a "estampa" (pdfOut) e não abre

 
Acredito que o problema esteja relacionado à essa linha do código:
Call VBA.Shell("cmd.exe /C " & strExec, vbMinimizedNoFocus) ' cmd chama o utilit.que converte
 
e ao local do armazenamento da pasta.
Este post foi modificado 4 anos atrás por SandroLima
 
Postado : 25/03/2021 3:52 pm
(@teleguiado)
Posts: 142
Estimable Member
 

@sandrolima

Não sei mais o que pode ser. Vamos ver se alguém sabe o porque.

Tem um arquivo que salva na pasta certa e tem outro arquivo em outra pasta que esta salvando numa pasta totalmente diferente. 🤔 

O arquivo na pasta da esquerda esta salvando na pasta da direita e o arquivo na pasta da direita esta salvando corretamente na mesma pasta do arquivo.

 

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 25/03/2021 6:32 pm
(@teleguiado)
Posts: 142
Estimable Member
 

@sandrolima

Consegui salvar na pasta que não estava funcionando antes, incluir o caminho da pasta no código abaixo:

strExec = "pdftk " & Chr(34) & ThisWorkbook.Path & "\" & pdfIn & Chr(34) & " background " _
& Chr(34) & ThisWorkbook.Path & "\" & pdfStamp & Chr(34) & " output """ & ThisWorkbook.Path & "\" & pdfOut

 

Veja se funciona pra você também.

 

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 29/03/2021 10:41 am
(@teleguiado)
Posts: 142
Estimable Member
 

@sandrolima

Teste o arquivo em anexo só lembrando que tem que alterar a pasta padrão do Adobe instalado na sua maquina.

 

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 30/03/2021 12:23 pm