Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por SandroLima
#63220
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 gera o PDF e abre ele ao final... e agora não o faz mais.

Não entendo pq não está funcionando... pelos prints dá para ver que ela 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.
Imagem
Imagem
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por SandroLima em 25 Mar 2021 às 01:05, em um total de 1 vez.
Por babdallas
#63221
Tenho Office 365. O código funcionou normalmente.
SandroLima agradeceu por isso
Por SandroLima
#63230
Pois é...

Não sei como faço para arrumar isso.

Conversei com o técnico que fez o reparo do pc...

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:
Código: Selecionar todos
    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:
Código: Selecionar todos
    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.
Por babdallas
#63232
Depois que vc gera.o RECIBO.pdf, qual o objetivo do restante do código?
SandroLima agradeceu por isso
Por SandroLima
#63234
O "pdfOut" ele "estampa" o intervalo "A1:N49" em um PDF que contem uma marca dágua".

Ali na Macro o Arquivo no qual ele "estampa" o intervalo está descrito como:
Código: Selecionar todos
pdfStamp = "MARCA D'ÁGUA (RECIBO).pdf"
Diretamente falando ele "imprime" o Recibo em um papel timbrado.
Por babdallas
#63236
O problema deve estar neste pdftk.exe. Não tenho este software instalado aqui para testar. Se vc fizer manualmente, funciona?

Pode ser que este software não esteja funcionando adequadamente após a troca de Windows 8 para Windows 10.
SandroLima agradeceu por isso
Por SandroLima
#63241
Como eu testaria manualmente?

Não tenho certeza que seja o Windows 10... no notebook ele gera o arquivo normalmente e nele tenho o Windows 10 instalado.

Quer que eu lhe envie o pdftk.exe?

Para que a Macro funcione é necessário que estejam na mesma Pasta:
- a planilha (NÃO ABRE O PDF)
- o arquivo da Marca D'Água (MARCA D'ÁGUA - (RECIBO)), nesse caso usar qualquer PDF para teste
- o arquivo " libiconv2.dll"
- e o arquivo "pdftk"
Imagem
Editado pela última vez por SandroLima em 25 Mar 2021 às 11:24, em um total de 1 vez.
Por babdallas
#63242
Este arquivo é um executável. Logo, imagino que ele tenha uma interface para o usuário mexer no pdf e fazer oq vc está fazendo via script no VBA.

Entrei no site do pdftk e veja na imagem que diz que é compatível até com Windows 8. Não cita o Windows 10.
Imagem
SandroLima agradeceu por isso
Por SandroLima
#63243
Puxa vida!
Mas continuo achando que não é isso... como disse no meu note tenho Windows 10 e funciona.

Editei a resposta anterior.
Por babdallas
#63244
Fica difícil saber sem ter um ambiente de teste apropriado, com todos os arquivos.
SandroLima agradeceu por isso
Avatar do usuário
Por Kledison
Avatar
#63247
@SandroLima

Para adicionar anexos no fórum, clique em +Resposta, depois em Adicionar Anexo, conforme imagens abaixo:

Imagem


Imagem
SandroLima agradeceu por isso
Por SandroLima
#63265
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 a 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:
Código: Selecionar todos
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?
Por SandroLima
#63266
Vejam 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
Imagem

Acredito que o problema esteja relacionado à essa linha do código:
Código: Selecionar todos
Call VBA.Shell("cmd.exe /C " & strExec, vbMinimizedNoFocus) ' cmd chama o utilit.que converte

e ao local do armazenamento da pasta.
Por babdallas
#63271
Tenta fazer uma macro para copiar o arquivo do drive do google para uma outra pasta, faz a rotina e depois copia de volta para o google drive.
Por SandroLima
#63292
Hummm... é uma boa alternativa.

Isso pode ser interessante e resolver o problema. Pode ser útil para outras funcionalidades futuras também.

Poderiam me ajudar com essa macro?
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord