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

Announcements
Qlik and ServiceNow Partner to Bring Trusted Enterprise Context into AI-Powered Workflows. Learn More!
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
Anonymous
Not applicable

Consegui!

Exclui a versão 2.1 e instalei a versão 1.7.3.

Segue um link que fala de problemas encontrados na versão 2.0

http://forums.pdfforge.org/discussion/30741/pdfcreator-2-0-vbscript-support

lucianosv
Specialist
Specialist

Você alterou o app?

Precisa estar com permissão de execução de macro.

Anonymous
Not applicable

Não alterei nada no app, apenas instalei a versão 1.7.3 do PDFCreator e esta funcionando certinho.

nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP
Author

Na época que desenvolvi utilizei a versão 1.7.3, talvez na nova versão tenha alguma mudança na forma de chamar o PDFCreator. Vou verificar e comunico a todos

Anonymous
Not applicable

nicolett.yuri‌,

A macro funciona muito bem, mas por algum motivo, quando faço o agendador de tarefas rodar o Qlikview (que tem a trigger de chamar a Macro), ele simplesmente não salva o relatório e fica aberto, esperando que salve.

Tem idéia de como resolver?

Obrigado !

nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP
Author

Como você esta fazendo o agendamento?

Qual a versão do PDFCreator esta utilizando?

Anonymous
Not applicable

Antigamente isso funcionava, mas com um outro plugin (Bullzip Printer).

Criei uma task no agendador para abrir o Qlikview. Ao abrir, é disparado uma macro para gerar o relatório. Aparece que está imprimindo, mas ao gravar, nada faz.

Quando fecho o Qlikview e abro a interface do Pdf Printer, está lá o documento pendente, sendo que ao abrir o QVW na mão, ele funciona.

A versão é a 1.7.3.

Obrigado,

Not applicable

Tiago tudo bem?

Cara, estou com a mesma situação que vc estava.

Ao clicar no botão o mesmo abre a caixa de edição do modulo da macro e não executa a criação do PDF.

Fiz o downloado do PDFCreator versão 1.7.3 configurações minimas e mesmo assim não exibe mensagem de erro e nem gera o pdf, alguma outra recomendação a fazer?

Fiz as seguintes alterações no codigo da macro

'Chamada da função passando os seguintes argumentos - 1: Nome do arquivo a ser gerado - 2: Nome do Report a ser gerado

PrintPDF "TABELA_PRECO", "teste"

    'Imprime o relatório

    ActiveDocument.PrintReport "teste", "PDFCreator"

nicolett_yuri
Partner Ambassador/MVP
Partner Ambassador/MVP
Author

Twister, fiz o teste na aplicação de exemplo e esta funcionando corretamente.

Tente rever o seu código ou então crie um tópico para que possamos ajuda-lo melhor

Not applicable

Obrigado pelo retorno Yuri.

Mil perdões a todos, funcionou certinho, eu estava colocando o segundo argumento errado:

PrintPDF "TABELA_PRECO", "RP01"

eu estava colocando o nome do meu relatório e na verdade é o ID do relatório.