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
Nenhum comentário:
Postar um comentário