Aliás, o blog que inicialmente era focado no Excel, agora praticamente virou blog de VBA.
Bem, pelo menos espero que mesmo assim continue sendo útil.
Vamos ao código de hoje.
O problema:
Precisava abrir muitos documentos PDF e selecionar apenas alguns campos para poder trabalhar com eles numa tabela do Access.
Após uma pesquisa pela internet, verifiquei que existe pouca coisa sobre automação do Adobe via VBA que pudesse me ajudar.
Automação com o Internet Explorer seria o óbvio, porém não existe "Select All" nem "Copy".
Parti para a solução que não considero a melhor, porém foi o que me quebrou o galho e espero que ajude aqueles que visitarem este blog.
Detalhe importante: os dados são copiados para um arquivo TXT e a parte de tratamento depende do documento que está sendo aberto e copiado, por isso não vou detalhar para não complicar.
Outro detalhe importante: marcar a referência Microsoft Forms 2.0 Object Library.
Se não estiver na lista das referências, procurar pelo arquivo FM20.dll que geralmente está em C:\Windows\System32\.
;-)
Option Compare Database
Option Explicit
Dim ie          As Object
Dim temp_area   As New DataObject
Dim arquivo     As String
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub Pausa(ByVal segundos As Single)
Call Sleep(Int(segundos * 1000#))
End Sub
'Código teste para copia de texto de arquivo PDF
Sub IExplorer()
Open CurrentProject.Path & "\dados.txt" For Output As #1
Set ie = CreateObject("internetexplorer.application")
ie.Visible = True
arquivo = Dir(CurrentProject.Path & "\*.pdf")
Do While arquivo <> ""
    ie.navigate CurrentProject.Path & "\" & arquivo
    Do While ie.busy
        DoEvents
    Loop
    Pausa 2
    SendKeys "%E", True
    SendKeys "{down}", True
    SendKeys "{down}", True
    SendKeys "{down}", True
    Pausa 0.5
    SendKeys "{ENTER}", True    'Selecionar tudo
    SendKeys "%E", True
    SendKeys "{down}", True
    Pausa 0.5
    SendKeys "{ENTER}", True    'Copiar
    temp_area.GetFromClipboard
    Print #1, temp_area.GetText
    Print #1, "---------------------"
    Debug.Print arquivo
    arquivo = Dir
Loop
Close #1
ie.Quit
Set ie = Nothing
End Sub
 
 
