Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP

Exportando para PDF (Macro)

Fala galera!

Tempos atrás me perguntaram como posso automatizar a exportação de relatórios para PDF através de Macros. Confesso que há muito tempo venho fugindo desse assunto, porém estou trabalhando em um projeto e uma das atividades é essa! Acabou a fuga rsrs.

Vamos lá.

Em primeiro lugar, a fonte de informação deverá ser um Report (Relatório) do QlikView, tendo este relatório pronto podemos prosseguir com a macro.

A biblioteca que estou utilizando para exportação é PDFCreator 1.7.3, pois esta é uma ferramenta gratuita e na exportação não houver perda na qualidade de imagem (pelo menos no meu caso). http://www.pdfforge.org/pdfcreator/download.

Bom, vamos ao código em VBScript. Cada linha de execução possui um comentário/explicação em verde e negrito.

sub PDF

'Criando instância do PDFCreator
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")

'Variáveis de configuração da biblioteca PDFCreator
With pdfjob

'Verificações da fila da impressora
If .cStart("/NoProcessingAtStartup") = False Then
If .cStart("/NoProcessingAtStartup", True) = False Then
'Caso não tenha nenhum objeto na fila de impressão, termina a macro.
Exit Sub
End if

'Caso tenha objeto na fila de impressão, torne a impressão visível
.cVisible = True
End If

.cOption("UseAutosave") = 1 'Permitir o Autosave
.cOption("UseAutosaveDirectory") = 1 'Permitir que grave no diretório
.cOption("AutosaveDirectory") = Path 'Caminho que será gravado o relatório
.cOption("AutosaveFilename") = ReportName 'Nome que será gravado o relatório
.cOption("AutosaveFormat") = 0 'Formato PDF
.cClearCache

'Finalizando as configurações da biblioteca PDFCreator
End With

'Imprime o relatório
ActiveDocument.PrintReport ReportID, "PDFCreator"

'Aguarde até que o processo entre na fila de impressão
Do Until pdfjob.cCountOfPrintjobs = 1
ActiveDocument.GetApplication.Sleep 20
Loop
pdfjob.cPrinterStop = False

'Aguarda até que a fila de impressão esteja vazia
Do Until pdfjob.cCountOfPrintjobs = 0
ActiveDocument.GetApplication.Sleep 20
Loop

'Termina o processo
pdfjob.cClose

'Zerando a variável
Set pdfjob = Nothing

end sub

Praticamente essa é a forma de chamar a biblioteca do PDFCreator. Agora basta criar uma sub para chamar essa macro e então utiliza-la.

Para facilitar o entendimento, estou anexando uma aplicação de exemplo.

Observação: Fiz o teste de execução através do QlikView Client e também acesso web (IE.Plugin) e ambos funcionaram conforme o determinado.

Qualquer dúvida por favor comentem!

Abraços

Labels (1)
  • Macro

57 Replies
pablolabbe
Partner Ambassador
Partner Ambassador

O problema de todas as soluções de macros que geram pdf é que dependendo do driver PDF ela não funciona ou se mostra instável.

Me parece que esta funciona sem problemas.

Valeu a dica Yuri Nicolett

Abraço,

Pablo Labbe

Did you find a solution to your question? Mark the solution as accepted and if you found it useful, press the like button! | Follow me on Linkedin
nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP
Author

Estou com um projeto ativo em um cliente que gera 300 arquivos/dia e até o momento não ocorreu nenhum problema utilizando esse método.

Qualquer coisa vou alterando o código e postando para vocês!

Not applicable

Pessoal, esta dando erro na verificação do script. Sabem pq?

imagem04_duvida.JPG.jpg

nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP
Author

Rodrigo, faltou você criar o nome da sub.

No início do seu código (primeira linha) coloque: Sub NOMEDASUB

e na última linha do seu código coloque: End Sub

nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP
Author

Caso tenha maiores dúvidas, faça o download do QVW que deixei em anexo, talvez ele te ajude um pouco

Not applicable

Yuri, fiz o que você propos, mas ainda continua com erro ali destacado na imagem...

imagem05_duvida.JPG.jpg

nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP
Author

Rodrigo, como você copiou e colou o código que passei no post, ele esta pegando os caracteres incorretamente.

Troque todos os “ por "

Troque todos os ” por "

Troque todos os ‘ por '

nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP
Author

Estou corrigindo os sinais de aspas e apóstrofe no POST, assim quem copiar e colar o código não terá mais esse problema que o Rodrigo Silva teve!

Not applicable

O qlik não está encontrando o controle activex...preciso instalar algo antes do pdfcreator?

imagem06_duvida.JPG.jpg