Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
ErickSant

Excel macro utilizando ocr+ vba

Recommended Posts

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 ?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este seu arquivo pdf permite copia-lo? 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Editado por ErickSant

Compartilhar este post


Link para o post
Compartilhar em outros sites

Remova a linha abaixo do codigo:

Sheets(1).Activate

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Editado por ErickSant

Compartilhar este post


Link para o post
Compartilhar em outros sites

É incompatibilidade de versão do Office. 

 

Verifique a versão e se 32 ou 64 bits, do office.

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Versão 2016(16.0.8431.2110 32 bits)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimente alterar:

 

A linha:            AppActivate "Microsoft Excel"

 

Por esta:         AppActivate "Excel" 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Editado por ErickSant

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que esteja executando pelo depurador.  

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

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ? 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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"

  

Compartilhar este post


Link para o post
Compartilhar em outros sites

"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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
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?

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

64 bits

Editado por ErickSant

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o exemplo que converte o pdf para texto em seguida importa para o excel.

Extraia os arquivos e coloque o seu pdf na mesma pasta que contem esses arquivos.

 

Convert_PDF.zip

Editado por Basole
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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.
 

Editado por ErickSant

Compartilhar este post


Link para o post
Compartilhar em outros sites
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 ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×