Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
nicolett_yuri

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
nicolett_yuri
Author

Rodrigo, ao invés de me passar por e-mail. Abre uma discussão.

Fica mais correto

Not applicable

Já tinha enviado!!

Not applicable

Yuri, quando tentei abrir seu arquivo teste, o meu qlikview trás esta mensagem em anexoimagem08_duvida.JPG.jpg

nicolett_yuri
Author

Isso ocorre porque seu QlikView Client não esta licenciado, ou seja, esta na versão Personal Edition.

Para licencia-lo, você precisa estar em um ambiente que possua um QlikView Server e neste ambiente você precisa possuir uma licença do tipo Named Call

lucianosv
Specialist
Specialist

nicolett.yuri, bom dia.

Essa macro do seu qvw deveria executar no client ou funciona só no server?

nicolett_yuri
Author

Luciano Vasconcelos funciona nos dois ambientes. No server eu testei apenas com IE Plugin

lucianosv
Specialist
Specialist

Yuri Nicolett,, perguntei porque na minha máquina não está exportando e não dá erro.

O botão de ação não executa a macro, só abre o script.

Estou usando o qvw que você postou e já instalei o PDFCreator. Vou reinstalar o PDFCreator usando a versão 1.3.

Tenho macros de envio de email e rodam direto sem problemas. As diretivas de segurança estão OK.

No seu script não precisa ajustar nada certo?

nicolett_yuri
Author

Você precisa alterar a variável de definição do caminho em que será armazenado o diretório.

No script esta na aba variáveis

vPathArquivos

lucianosv
Specialist
Specialist

Agora sim. Funcionou. Vlw.

Anonymous
Not applicable

Boa tarde nicolett.yuri,

Estou rodando o qvw anexo e esta ocorrendo a mesma coisa que estava acontecendo com Luciano. Eu clico no botão e ele abre o script sem erro nenhum. Já alterei o caminho da variável.

Será que é algo relacionando a versão do  PDFCreator, estou usando a mais recente 2.1.