Filipe, de fato a conversão fica muito ruim e com a importação direta algumas linhas se fundem devido talvez à alguma formatação no pdf, problemas com fontes, enfim...
Para contornar esse problema, fiz um teste aqui que deu ótimos resultados com seu arquivo, mas a primeira etapa tem que ser feita no Word, pois o Excel não possui uma opção necessária.
Siga a receita de bolo prá ver se aí também melhora o resultado:
- Abra seu arquivo pdf no Adobe Acrobat Reader
- Selecione todo o conteúdo com Ctrl + A
- Copie para a Área de Transferência (Ctrl + C) - vai demorar um pouco
- Crie um documento novo no Word
- Agora o pulo do gato: clique com o botão direito do mouse no documento em branco e escolha "Mesclar Formatação (M)", símbolo de uma prancheta com uma seta. (Não use simplesmente Colar ou Ctrl + V).
Note que o texto ficou bem melhor, e as linhas que estavam fundidas estão corretamente separadas.
A próxima etapa seria dar uma melhorada no conteúdo, eliminando algumas rebarbas como linhas em branco, caracteres estranhos, etc (ligue o "pi"). Sugiro usar também o próprio Word aqui, pois ele tem um poder maior em procura-e-substituição do que o Excel, pois usa um mecanismo de busca que lembra um pouco as Expressões Regulares (regex).
Poderia fazer na unha, mas sugiro usar uma macro. Teste por favor (no VBA do Word):
Option Explicit
Type ProcESubst
Localizar As String
SubstPor As String
UsarCoringa As Boolean
End Type
'_______________________________________________________________________________________
Public Sub SanitizarTexto()
Dim wdDoc As Word.Document, wdRg As Word.Range
Set wdDoc = ThisDocument
Set wdRg = wdDoc.Content
Dim Sujeira As ProcESubst
With Sujeira
.Localizar = "[^13^11]{2;}": .SubstPor = "^p": .UsarCoringa = True 'Linhas Vazias
ExecutarSubstituicao wdRg, .Localizar, .SubstPor, .UsarCoringa
.Localizar = "^13[ ^s]@": .SubstPor = "^p": .UsarCoringa = True 'Espaço(s) no início da linha (Equivalente ao LTrim)
ExecutarSubstituicao wdRg, .Localizar, .SubstPor, .UsarCoringa
.Localizar = "[ ^s]@^13": .SubstPor = "^p": .UsarCoringa = True 'Espaço(s) no fim da linha (Equivalente ao RTrim)
ExecutarSubstituicao wdRg, .Localizar, .SubstPor, .UsarCoringa
.Localizar = "^t": .SubstPor = " ": .UsarCoringa = False 'Tabulações por espaço
ExecutarSubstituicao wdRg, .Localizar, .SubstPor, .UsarCoringa
.Localizar = "^m": .SubstPor = "": .UsarCoringa = True 'Elimina quebras de seção ou de página manual
ExecutarSubstituicao wdRg, .Localizar, .SubstPor, .UsarCoringa
.Localizar = "[-^~^-^+^=]": .SubstPor = "-": .UsarCoringa = True 'Substitui travessão, traço, hifen incondicional e opcional por hifen normal
ExecutarSubstituicao wdRg, .Localizar, .SubstPor, .UsarCoringa
.Localizar = " {2;}": .SubstPor = " ": .UsarCoringa = True 'Dois ou mais espaços por um só
ExecutarSubstituicao wdRg, .Localizar, .SubstPor, .UsarCoringa
End With
With wdRg.Paragraphs 'Deleta primeiro e último parágrafos, se vazios.
If .Item(1).Range.Characters.Count = 1 Then .Item(1).Range.Delete
If .Item(.Count).Range.Characters.Count = 1 Then .Item(.Count).Range.Delete
End With
End Sub
'_______________________________________________________________________________________
Sub ExecutarSubstituicao(rg As Word.Range, ProcurarPor As String, _
SubstituirPor As String, UsarCoringa As Boolean)
With rg.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ProcurarPor
.Replacement.Text = SubstituirPor
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = UsarCoringa
.Execute Replace:=wdReplaceAll
End With
End Sub
Agora estaria pronto prá copiar do Word e colar no Excel para ser trabalhado. Por enquanto só estivemos falando da conversão/importação.
A próxima etapa seria construir o banco de dados ou planilha para que fique funcional. Até comecei a querer fazer algo, mas confesso que parei quando olhei mais atentamente e vi que a lista não está padronizada, embora aparente estar. Por exemplo, as primeiras linhas que contém marca, modelo, ano, etc. (hierarquia maior) algumas têm 4, outras 6 linhas ou mais, às vezes as linhas estão trocadas vindo o número de cilindros antes do ano e outras o contrário, por exemplo; e também não tem nada que indique com segurança onde termina essa hierarquia maior para o início dos registros (hierarquia menor). Aparentemente as linhas de registro seriam as que contém um hifen separando o código da peça da descrição, mas nem isso é garantido, pois existem itens como: 251.9 KIT COMANDO VALVULAS ( 251+201 ) ou outro como 93294583 JUNTA CABEÇOTE METALICA ( ORIGINAL ) onde não há o hífen separador. Não devem ser muitos, mas tratar essas exceções é que é o mais chato do problema e demanda tempo para analisar todas as possibilidades.
Passo portanto a bola de volta prá vc ou para os demais colegas que estiverem dispostos.
Um abraço e Boas Festas!
Postado : 22/12/2016 10:54 pm