Ir ao conteúdo

Posts recomendados

Postado

Prezados,

boa tarde,

 

Preciso idetentificar 2 campos específicos de um PDF e procura-los em um arquivo em excel. Minha dúvida é como fazer isso de forma automática, li sobre a tecnologia OCR mas não consegui achar um programa gratuito para realizar testes.

Alguém poderia me ajudar ?

 

 

Postado

Segue exemplo generico, que abre o arquivo pdf especificado, copia e cola no Excel.

 

Estou considerando que utiliza o adobe acrobat reader para ler os arquivos pdf. 

 

Alteres a variaveis, como diretório, nome dos arquivos, etc. 

 

Sub StartAdobe()
Dim AdobeApp As String
Dim AdobeFile As String
Dim StartAdobe
 
AdobeApp = "C:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
AdobeFile = "C:\Temp\BACKUP\out123.pdf"
 
StartAdobe = Shell("" & AdobeApp & " " & AdobeFile & "", 1)
 
Application.OnTime Now + TimeValue("00:00:05"), "FirstStep"
End Sub
Private Sub FirstStep()
SendKeys ("^a")
SendKeys ("^c")
 
Application.OnTime Now + TimeValue("00:00:10"), "SecondStep"
 
End Sub
 
Private Sub SecondStep()
SendKeys ("%fx")
AppActivate "Microsoft Excel"
ThisWorkbook.Activate
Sheets(1).Activate
Range("A1").Activate
SendKeys ("^v")
End Sub

 

Execute startAdobe

 

 

  • Curtir 1
Postado

@Basole obrigado pela ajuda,

estou tentando adaptar o código enviado, mas até agora ele só abriu o PDF, depois de abrir ele dá um erro "não é possível executar a macro 'pasta1!FirstStep.Talvez ela não esteja disponível nesta pasta de trabalho ou todas as macros estejam desabilitadas."

 

Eu precisava copiar 2 campos específicos do PDF e depois procurar esses valores em uma coluna no excel, conseguiria me ajudar nisso ?

 

Mais uma vez obrigado pelo rápido retorno!

Postado

Crie um modulo e cole o código neste modulo. Pelo seu relato, você colou o código no vbe de uma planilha (aba).

 

O código exemplo, vai colar os dados na 1ª aba; Neste método copiar e colar, não tem como especificar o que colar, ou seja vai copiar e colar todo o documento.

 

Depois que tiver todos os dados obtidos do pdf,ai faz uma procura dos campos citados, copia no local desejado, em seguida deleta os dados colados.   

 

 

  • Curtir 1
Postado

Consegui rodar o código, copiou todo o conteúdo do PDF e deu erro na linha;

"AppActivate "Microsoft Excel"
ThisWorkbook.Activate
Sheets(1).Activate
Range("A1").Activate
SendKeys ("^v")
End Sub

 

A escrita está correta, ou se utiliza outro argumento para abrir excel 2016 ? O erro que dá é de procedimento inválido.

Postado

Mesmo removendo o erro persiste, veja o anexo.

Não sei se por meu excel estar em português possa estar influenciando em algo...

Para rodar esse código, há alguma referência específica que deve estar ativado ?

Muito obrigado pelas respostas.

 

 

vba.png

Postado

Depurando o código reparei que a linha "SendKeys ("%fx")" abre o menu de ferramentas na janela do VBA.

adicionado 2 minutos depois

substituindo  as linhas informadas o códigou rodou mas não colou as informações no excel e sim dentro da janela do código...

Postado

Acredito que esteja executando pelo depurador.  

Experimente executar na planilha ativa. Aperte as teclas Alt+ F, selecione "StartAdobe" e botão [ executar ].

 

  • Amei 1
Postado

Consegui rodar o código sem erros, era isso mesmo, tinha que salvá-lo e executá-lo pela planilha aberta.

Como faço para ao invés dele selecionar apenas a primeira página do PDF, ele selecionar todo o conteúdo do arquivo pdf ?

 

Por exemplo, o PDF que estou rodando o código possui 51 páginas. A ideia geral seria primeiro trazer todo o conteúdo desse pdf para o excel, e procurar alguns campos específicos para verificar se existem em uma coluna de um outro arquivo em excel... Se existir = ok, se não existir = marcar o valor na coluna procurada.

 

Obrigado pelo retorno!

Postado

O código copia todo o conteúdo do documento, ou seja todas as paginas. 

 

O que pode estar acontecendo ai pra voce, é que o adobe demora alguns segundos para abrir o documento, dependendo do tamanho em mb, ou em pela quantidade de páginas, e também para copiar todas as paginas. 

 

Neste caso experimente alterar, aumentando o tempo em: 

 

Application.OnTime Now + TimeValue("00:00:15"), "FirstStep"

Application.OnTime Now + TimeValue("00:00:15"), "SecondStep"

 

Para procurar, aperte as teclas [ ctrl+ l ]

 

 

 

  • Curtir 1
Postado

Entendi o motivo de não puxar tudo, o PDF vem com o 'View > Page Display > Single Page View' ativado, por isso só seleciona uma página no ctrl + a... O ideal era esse PDF ser com a opção Enable Scrolling ativado.

 

Supondo que todo o conteúdo esteja no excel, como seria esse código para comparar um valor específico do arquivo extraido no excel com uma outra base também em excel ? 

 

 

Postado

Se não estiver conseguindo puxar todo o conteúdo do pdf, uma outra opção, é extrair os dados para um arquivo texto, em seguida importar para o excel. 

 

O código para comparar seria mais ou menos assim: 

 

 Dim rng As Range
    Dim msg As String
    Dim ed_1 As String
    
    With ActiveSheet
        
        Set rng = Cells.Find(InputBox("Digite o que deseja comparar", "Localizar", "Teste"))
        If Not rng Is Nothing Then
            ed_1 = rng.Address
            Do
                msg = msg & " Encontrado em: " & rng.Address & vbCr
                
                Set rng = Cells.FindNext(rng)
                If rng Is Nothing Then Exit Sub
                Loop While rng.Address <> ed_1
            End If
            
        End With
        
        If msg <> "" Then MsgBox msg, 64, "Itens Encontrados"

  

Postado

"Se não estiver conseguindo puxar todo o conteúdo do pdf, uma outra opção, é extrair os dados para um arquivo texto, em seguida importar para o excel." 

 

É possível fazer isso com o VBA ? 

 

A lógica seria da seguinte forma: 

 

Captar 2 valores do PDF(campo A e Campo B) e faça 2 verificações.

Verificar se o "Campo A" existe na coluna "ValoresA" no arquivo "XXXX" em excel.
    Se existir verificar na coluna "ValoresB" se o valor do "CampoB" do arquivo 
"XXXX" bate
    Se bater ok.   
       senao bater marcar de alguma forma que não foi encontrado.
fim.

Postado
33 minutos atrás, ErickSant disse:

É possível fazer isso com o VBA ? 

 

Sim, mas utilizo um utilitário ajudar nesta tarefa.

Qual a versão do seu windows? e se é 32 ou 64 bits?

 

 

 

Postado

@Basole  o conversor até funcionou, porém o pdf vem com alguns campos juntos, veja o anexo.

 

A ideia é captar 2 valores do PDF(Payment Amount(valor(Célula A20)) e Payment no(valor)Célula A15)) e faça 2 verificações.

Verificar se o "Payment no" existe na coluna "B" no arquivo "xxxxxxxxx" 
    Se existir verificar na coluna "A" se o valor do "Payment Amount" do arquivo 
"xxxxxxxxx" bate
    Se bater ok.   
       senao bater marcar de alguma forma que não foi encontrado.
 

Postado
13 minutos atrás, ErickSant disse:

 o conversor até funcionou, porém o pdf vem com alguns campos juntos, veja o anexo.

 

Não estou vendo nenhum anexo ????

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!