Exibindo arquivos em PDF pelo Access

Ficou muito fácil configurar o Access 2007/2010 para a exibição de arquivos em PDF, bastanto para tanto, utilizar o controle ActiveX do Adobe Reader.

Para que o ActiveX funcione é necessário que você tenha instalado na sua máquina o software Adobe Acrobate Reader.

Abra um formulário no modo estrutura e selecione o botão ActiveX na guia design da ribbon.

Abrindo Activex do Access 2007

 

Selecione da lista a opção Adobe PDF Reader e  clique em OK.

Selecionado o ActiveX Windows Media Player

 

O quadro do Reader é carregado no formulário. 

ActiveX no formulário

 

Observe o código abaixo, utilizado no exemplo que disponibilizo, que no evento "Ao abrir" do formulário, defino o tamanho do quadro e chamo pela função que carrega o arquivo PDF no ActiveX.

Private Sub Form_Open(Cancel As Integer)
'Dimensiono a tela do PDF para 22 x 15.5cm
Me.AcroPDF0.Width = 568 * 22
Me.AcroPDF0.Height = 568 * 15.5
'carrega o artigo 1 
Call fncCarregaPdf
'entrega o foco para o botão 1
Me!bt1.SetFocus
End Sub
------------------------------------------------------------------------------
Private Sub fncCarregaPdf(Optional j As Byte = 0)
Dim origem As String
On Error Resume Next
'gravo na variável o local que se encontra os arquivos PDF
origem = CurrentProject.Path & "\artigos\"
Select Case j
  Case 0 'botão 1
    Me!AcroPDF0.LoadFile origem & "artigo1.pdf" 'carrega artigo 1 no ActiveX
  Case 1 'botão 2
    Me!AcroPDF0.LoadFile origem & "artigo2.pdf"
  Case 2 'botão 3
    Me!AcroPDF0.LoadFile origem & "artigo3.pdf"
End Select
End Sub

Veja o resultado de um dos artigos sendo carregado no formulário:

ActiveX Windows Media Player no Access 2007

 

 

 


32 comentário(s)

Marcelo   19/08/2010 13:45:02

olá avelino gostei muito do artigo, mas vem cá, lá aonde define altura e largura, se colocasse direto em twips não se ganharia alguns microssegundos no carregamento do pdf? imagino que da forma que voce coloca o access irá gastar micronesimos de segundo calculando antes para depois abrir ou não?
se essa teoria estiver certa talvez em pcs menos robustos isso possa fazer uma maior diferença. o que tu diz?

Avelino Sampaio   20/08/2010 10:34:35

Marcelo,

testei num caidinho que tenho aqui e sinceramente, não achei que compremeteu não.

Grato pela sua participação.

Robson   16/09/2010 16:49:41

Avelino, muito bom o artigo.
Eu tenho um aplicativo (winXP e access2007) e utilizei parte de seu código para visualizar arquivos pdf.
Trocamos nossos equipamentos para win7 e access2010 e o sistema não esta exibindo os arquivos.
Gostaria de saber se você tem alguma sugestão.
Obrigado!

Robson   27/09/2010 09:26:37

Avelino, mesmo que você não tenha escrito nada a a respeito do meu comentário de 16/09/10, informo que já resolvi o problema.

Avelino Sampaio   27/09/2010 11:02:35

Robson,

Obrigado pelo seu retorno e peço mil desculpas pela minha falta de retorno.

Sucesso

Márcio Melo - Rio de Janeiro/RJ   27/11/2010 18:58:26

Hoje, aproveitei para implementar essa grande dica com muito estilo, adicionei em meu projeto um simples leitor PDF apontando como você sugiriu para uma pasta [artigo] e para complementar coloquei uma combobox listando todos os artigos desta pasta, bastando o leitor escolher e pronto já esta ao seu alcance a leitura do pdf - nesse link tem como listar os arquivos de um diretório (http://www.tomasvasquez.com.br/blog/microsoft-office/vba-listar-arquivos-de-um-diretorio) para ajudar vou deixar aqui parte de como fiz a chamada da função para montar a lista, olhem o resto da função no link

Dim arquivos() As String
Dim listagem As Variant
Dim lCtr As Long
arquivos = ListaArquivos(origem)
For lCtr = 0 To UBound(arquivos)
' Debug.Print arquivos(lCtr) & ";" 'RowSource - separar por ponto e virgula
listagem = listagem & arquivos(lCtr) & ";"
Next
Me.Comb1.RowSource = listagem
lembrar que na combobox, deve estar configurada para lista de valores.

Então, Avelino resolvi seguir o seu conselho e nesta pasta artigos vou colocar os pdf relacionado a ajuda do programa de maneira que a própria empresa possa fazer esse tutorial.

Sou mais Brasil! forte abraço

Claudio Alves de Oliveira   19/08/2011 17:22:41

Boa Tarde...

Achei muito util o artigo pois até hoje eu usava a visualização pelo WebBrowser para os arquivos PDF...

A proposito... você sabe se é possivel fazer isto em relatórios?

Digo porque tenho um sistema de arquivo de documentos... Assim a empresa scaneia todos os documentos em PDF e o sistema os arquiva na rede, no entanto as vezes uma àrea da empresa pede os documentos relacionados a um assunto em especial e eu gostaria de criar um relatorio consolidando com todos os PDFs arquivados sobre o assunto em um único PDF do sistema.

Eu já consigo fazer isto com os documentos armazenados como JPG "Relatório Fotográfico" mas não sei se da para fazer com PDFs.

Madson Braz   10/11/2011 17:13:26

1º: Avelino muito boa essa dica.

2º: Claudio Alves de Oliveira , no site http://www.adobe.com/products/acrobat/technical-resources.html tem um SDK para Acrobat que demonstra o uso da ferramenta, acredito que encontre lá os parâmetros para concatenar pdfs usando alguma dll da adobe.

3º: Uma dica> Toda vez que "lodava" um arquivo ele voltava para a visualização de página inteira. Então buscando na internet os métodos que compõem o objeto, para verificar como setar o zoom de exibição, encontrei um pdf que lista todos eles: http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/reader/pdfs/reader_overview.pdf
Usei o setZoom e adicionei ao código que carrega o arquivo, ficando assim:

flPdf = "s:\temporario\" & Me.Lista0.Column(0)
Me.AcroPDF2.LoadFile flPdf
Me.AcroPDF2.setZoom (90)

No caso aqui setei para carregar em 90%



Williams   30/03/2012 18:12:56

Claudio Alves de Oliveira teria como disponibilizar o banco de dados (sistema de arquivo de documentos.) que comentou como exemplo ?

João Paulo   02/04/2012 14:08:32

Avelino,
Estou com o mesmo problema exposto acima pelo Robson, porém eu ainda não encontrei a solução. Ficaria grato se alguém tivesse uma luz.
Obrigado

Avelino Sampaio   02/04/2012 14:38:04

João,

mas vc está com o Access 2007 ? Se estiver, atualize com o pacote Sp3, que vc baixa do site da Microsoft.

Se estiver com o Access 2010 e for de 64bits, creio que vc não terá a sua disposição o Active X. Teras que procurar outra solução.

Qual é a mensagen do erro ?

João Paulo   02/04/2012 15:42:32

Avelino,
Acho melhor eu descrever o problema por completo.
Eu utilizo como base do meu aplicativo, o seu Maestro. Para visualizar os PDF mesclei a listagem de documentos através do formulario "Form_frmPermissõesUsuários" da solução do Maestro que usa o "RowSource" + controle ActiveX. No PC em que desenvolvo o aplicativo está instalado o WinXP SP3 + Access 2007 e nesta configuração o aplicativo está funcionando perfeitamente.
Depois de testado publiquei o programa em servidor que utiliza o Windows Server 2003 + Access 2007, e ai que começa o problema. Quando eu executo o programa diretamente do servidor ou por atalho em qq outro PC diferente do meu, ao abrir aparece a mensagem "Can't find project or library" e não inicia o programa. Então vou até a biblioteca e vejo que não existe uma referencia, pois aprece a seguinte mensagem "MISSING: Acrobat Access 3.0 Type library" na lista de referências. Pronto, desmarco essa opção, o aplicativo inicia normalmente, porém não consigo que a lista de documentos que eu quero ver em pdf apareça.
Esse problema não acontece no meu pc. Posso marcar e desmarca essa referencia que ele funciona normalmente, mas em qq outro pc ele não funciona.
Não sei mais o que fazer. Se souber algo, fico muito grato.

João Paulo   02/04/2012 15:44:24

Avelino,
Esqueci de mencionar, se quiser passar informações com anexos, estou na sua lista de usuários do Monta Ribons. Tenho uma licença de uso.
Valeu!

Waldson   31/03/2013 20:00:09

Boa noite a todos,

Consegui abrir o arquivo .pdf não em um formulário e sim pelo Application.FollowHyperlink.
Gostaria de saber se tem como imprimir uma página específica.
exemplo: imprimir as páginas 2, 4 e 6 deste arquivo aberto.
Agradeço a todos pela orientação.

Lelson Barbosa   03/04/2013 06:00:16

Avelino,
Utilizei tudo direitinho como você explica ai e o meu arquivo PDF visualiza normalmente, mas quando eu copio o meu projeto pra outro pc ele não encontra o obeto (o PDF), vale mencionar que usei uma macro para chamr o formulário.

Avelino Sampaio   03/04/2013 06:10:02

Lelson,

Isso acontece por que o outro PC não está com Office 2007 atualizado. Leia o artigo "Não deixar abrir se não tiver o Service Pack 2 instalado" aqui na seção DICAS do site.

Sucesso!

Lelson Barbosa   03/04/2013 07:44:19

Avelino,

Avelino esqueci-me de dizer que estou a utilizar o access 2010, o meu projeto não abre no access 2007. Obrigado

Avelino Sampaio   03/04/2013 08:45:02

Lelson

então o outro pc pode estar usando o Office 2010 de 64 bits. O ActiveX não funciona na versão de 64 bits. Verifique.

Vá na seção tutorial aqui do site e leia o artigo "64 bits - Seus aplicativos no futuro do presente"

Sucesso!

Avelino Sampaio   03/04/2013 08:46:39

Lelson,

verifique també se o Abode Reader está instalado.

Sucesso!

Lelson Barbosa   03/04/2013 08:50:16

Avelino,

Obrigado vou efetuar essas revisões e retornar o resultado

Hélio Sales   28/05/2013 17:08:30

Senhores, tenho um pdf editável. Saberiam me dizer se consigo fazer essa edição pelo access 2007/2010.
Grato e parabéns pelas matérias publicadas.

Avelino Sampaio   29/05/2013 04:55:29

Helio,

Quando é que um PDF se tornou editável ? Que programa vc usa para isso ?

Bom, nunca vi este recurso no Access.

Você pode gerar PDF de um relatório desde a versão 2007.

Sucesso!

Moreschi   12/07/2013 09:49:32

Olá Avelino, tudo bem?
Como faço para saber os nomes dos campos de uma tabela via VBA?
Abraços

Walter   15/07/2013 19:54:14

Avelino, tenho lido o seu artigo "64 bits - Seus aplicativos no futuro do presente", mas ainda não estou por entender como faço funcionar o pdf no access, já que o ActiveX não funciona em 64 bits. Você já conseguiu algo do tipo?
Abraços

Hugo Furtado   20/09/2013 05:59:59

Boas,
Como faço um relatório feito em access 2007 e depois quando click no botão imprimi já vem como pdf, é possivel?

Avelino Sampaio   20/09/2013 06:13:41

Hugo,

sim, vá na seção "Tutorias" aqui do site e veja o artigo "Gerar relatórios em pdf e enviar por email"

Sucesso!

Ismael   09/11/2013 08:17:45

Ótimo artigo Avelino,
Implementei ele em uma aplicação. Porém preciso girar a visualização do pdf após a abertura.
Tentei usar, após o comando Me!AcroPDF0.LoadFile a instrução:
SendKeys "+^{+}"
Ela seria o atalho (Shift + Ctrl + Adição), atalho para girar a visualização no adobe.
Porém não obtive sucesso.
Tem alguma idéia do que possa ser?
Obrigado e muito sucesso!

Luis Araujo   01/04/2014 12:09:58

Boa Tarde
Uma simples questão como posso abrir um pdf estando a ligação num modulo
Gostaria de abrir em formato htm ou pdf
Já experimentei algumas destas.

Public Sub fncOnAction(control As IRibbonControl)
On Error GoTo Trataerro
Select Case control.ID
Case "bt03"
'DoCmd.AcroPDF0.LoadFile origem & "\artigos\Tabela03.pdf
'DoCmd.OpenFile CurrentPath & "\artigos\Tabela03.pdf"

Avelino Sampaio   01/04/2014 16:11:58

Luis Araujo,

experimente este :

application.FollowHyperlink currentProject.path & "\artigos\Tabela03.pdf

ou

application.FollowHyperlink origem & "\artigos\Tabela03.pdf

Sucesso!

Rafael batista   02/04/2014 18:29:52

Olá Avelino, no meu win 7 não está rodando o pdf no access, eu nem acho ele na lista do activex.

segundo sua disposição você poderia me ajudar?

Access 2010

Avelino Sampaio   02/04/2014 18:49:45

Se estiver usando a versão de 64 bits do Office 2010 realmente não tem o Active X do PDF.


Cleverson   05/05/2014 14:29:00

Estou com um problema. Consigo abrir, imprimir mas imprime com orintação portrait.
Eis o código
Me.AcroPDF02.Width = 568 * 22
Me.AcroPDF02.Height = 568 * 15.5
Me.AcroPDF02.LoadFile ("C:\Teste\Relatorio de produção 25.4.2014 - Cópia (2).pdf")
Application.Printer.Orientation = acPRORLandscape
Me.AcroPDF02.printAll

o comando Application.Printer.Orientation = acPRORLandscape não está funcionando e não mostra erro.
simplesmente imprime no modo retrato.
Poderia me ajudar?



Envie seu comentário: