Notifications
Clear all

TRANSPOR DADOS DE UMA TABELA EM UM ARQUIVO PDF PARA O EXCEL, UTILIZANDO O WORD

2 Posts
2 Usuários
0 Reactions
1,134 Visualizações
(@Anônimo)
Posts: 0
Topic starter
 

Caros amigos, consegui um código para transferir dados de uma tabela em PDF para o excel, utilizando o word. No entanto, o script é engessado em uma quantidade fixa de linhas e colunas e que não transfere dados das demais páginas, a não ser da primeira.

O meu objetivo é acoplar nesse código, a capacidade dele contar a quantidade de linhas e colunas que a tabela tem independente da quantidade de páginas a fim de transcrever todos os dados de qualquer tabela em PDF, independente de seu números de linhas e colunas.

O CÓDIGO:

Sub lerPDF()
Application.ScreenUpdating = False

Dim objWord As New Word.Application
Dim docWord As Word.Document

caminhoArq = "C:\Users\briel\Downloads\Operações inad - por protudos - por PA.pdf"

'objWord.Visible = True
Set docWord = objWord.Documents.Open(caminhoArq, False, True)

For linha = 1 To 11
    For coluna = 1 To 4
        Cells(linha, coluna).Value = WorksheetFunction.Clean(WorksheetFunction.Trim(docWord.Tables(1).Cell(linha, coluna).Range.Text))
    Next coluna
Next linha

docWord.Close
Set docWord = Nothing

objWord.Quit
Set objWord = Nothing

Application.ScreenUpdating = True
End Sub

Percebe-se que como padrão, foi atribuído 11 linhas e 4 colunas. Como alternativa, até tentei acoplar essa parte, depois de "Set docWord = objWord.Documents.Open(caminhoArq, False, True)", no código, a fim de substituir o "11" e o "4" por "Lin" e "Col", respectivamente, mas deu erro na depuração:

Dim Lin, Col
ActiveDocument.Tables(1).Select
Lin = Selection.Tables(1).Rows.Count
Col = Selection.Tables(1).Columns.Count

Em anexo, consta a planilha com o referido código. Gostaria de ajuda nesse caso, por gentileza 🙂

 
Postado : 24/07/2022 4:21 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bem vindo ao Planilhando, @gabsilvel!

Sem ter o pdf pra analisar fica bem complicado.

Alguns insights:

  • Pra poder selecionar alguma coisa, tanto no Excel como no Word ou outros aplicativos, geralmente o objeto além de estar visível tem que estar ativo o que não parece ser o caso em seu código. Então, ao invés de selecionar a tabela do documento ativo no Word (ActiveDocument.Tables(1).Select), trabalhe com o que já está na memória, em suas variáveis. Por exemplo:
Lin = docWord.Tables(1).Rows.Count

Col = docWord.Tables(1).Columns.Count
  • Vc também pode fazer um loop pelas tabelas com For/Next ou For Each/Next pra varrer todas, dependendo da estrutura do pdf.
  • É praticamente impossível fazer um código tão genérico como vc deseja:
    Postado por: @gabsilvel

    O meu objetivo é acoplar nesse código, a capacidade dele contar a quantidade de linhas e colunas... a fim de transcrever todos os dados de qualquer tabela em PDF...

    Isso pq. vai depender da estrutura do pdf, o fluxo que possui, o programa que o gerou, etc. A não ser que sejam todos pdf's semelhantes, gerados pelo mesmo sistema.

 

 
Postado : 25/07/2022 3:27 am