Notifications
Clear all

Acess e VBA

6 Posts
4 Usuários
0 Reactions
1,811 Visualizações
(@filipeb)
Posts: 0
New Member
Topic starter
 

Boa tarde, estou com uma dúvida , tenho uma lista extensa de motores, e cada motor ou carro tem muitas peças, eu queria fazer um banco de dados no acess, para fazer um sistema de pesquisa mais especifico , por exemplo, eu busco por Corsa 1.0 e sai todas as peças dele! Só que essa lista está em PDF, eu fui converter e ele ficou uma péssima conversão.

E não sei se dá pra eu colocar por grupos, por exemplo. linha 1 na linha 1 colocar todas as peças.
Imagino que se eu colocar cada item em uma linha, quando for buscar por uma peça , ela não vai sair especifica daquele carro!

 
Postado : 21/12/2016 9:59 am
(@djunqueira)
Posts: 0
New Member
 

Dá um jeito de converter seu PDF q fica mais fácil p/ o pessoal ajudar.

 
Postado : 21/12/2016 1:39 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não sei se entendi corretamente, mas para o que deseja e preciso entrar mais profundamente em uma estrutura de banco de dados/tabelas/relacionamento/integridade/tipo de junção......
https://support.office.com/pt-br/article/Conhe%C3%A7a-a-estrutura-de-um-banco-de-dados-do-Access-6a95097a-f95c-45bf-be9b-a3f8d7d61c1d
https://pt.wikipedia.org/wiki/Estrutura_de_dados

 
Postado : 21/12/2016 5:11 pm
(@filipeb)
Posts: 0
New Member
Topic starter
 

o problema é a conversão do pdf , olha so como ficou!
Olhem só o pdf e a conversão, ficou muito ruim , queria eles em grupo!

Anexo

 
Postado : 22/12/2016 5:05 am
(@edsonbr)
Posts: 0
New Member
 

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
(@filipeb)
Posts: 0
New Member
Topic starter
 

Amigo,você merece um premio!
Que resposta ótima!
Muito obrigado ,ajudou muito!
Boas festas pra você!

 
Postado : 23/12/2016 1:09 pm