Notifications
Clear all

importar txt de uma arquivo com varias linhas e agrupadores

11 Posts
2 Usuários
0 Reactions
2,221 Visualizações
(@klebersonr)
Posts: 6
Active Member
Topic starter
 

Senhores

Não tenho dificuldade de importar textos comuns e seguir tutoriais em VBA para importar textos com correlações, mas não achei como consigo automaticamente separar em colunas as linhas e ignorar algumas. Creio que deva fazer alguma condicional para que a linha 2 não aparece e que a linha 1 seja movida para alguma coluna, e as demais linhas virem colunas.
Esse é um pregão do comprasnet/serpro, e pessoal nao pensa no usuário. São varias empresas com inumeros itens, mostei um exemplo.. mas todos tem essa cara de exportação.
Enfim, alguem tem algum modelo para que possa seguir?

Abraço

01.268.775/0001-05 - CASTELAO COM MAT DE CONSTRUCAO E SERVICOS LTDA
Item Descrição Unidade de Fornecimento Quantidade Valor Unitário Valor Global
6 CAIXA INSPEÇÃO Und 1 R$ 139,0000 R$ 139,0000
Marca: FORTLEV
Fabricante: FORTLEV
Modelo / Versão: ESGOTO
Descrição Detalhada do Objeto Ofertado: Caixa gordura dupla, concreto prémoldado, circular, com tampa, d = 60* cm
11 CAIXA SIFONADA Und 500 R$ 11,7000 R$ 5.850,0000
Marca: FORTLEV
Fabricante: FORTLEV
Modelo / Versão: ESGOTO
Descrição Detalhada do Objeto Ofertado: Caixa sifonada PVC, 150 x 150 x 50 mm, com grelha quadrada branca (NBR5688)

 
Postado : 05/06/2018 9:02 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Klebersonr, bom dia!

Anexe um txt como o layout real e com mais alguns registros (se precisar, distorça os dados reais substituindo por fictícios) e também um arquivo Excel mostrando quais colunas vc tem interesse e como/que ordem as colunas ficarão dispostas, pra facilitar.

 
Postado : 06/06/2018 6:49 am
(@klebersonr)
Posts: 6
Active Member
Topic starter
 

Prezado EdsonBR,

Segue os arquivos solicitados para melhor visualização e compreensão do problemas.

Abraço.

Kleberson.

 
Postado : 06/06/2018 9:56 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa noite, Klebersonr

Considerações:

  • Considerei inicialmente que seu arquivo txt está no mesmo diretório que o arquivo do Excel.[/*:m:3d3w29hv]
  • Não fiz tratamento de erros no código. Tente implementar, caso seja necessário.[/*:m:3d3w29hv]
  • Seu txt foi salvo usando CharSet em UTF-8, então para trazer o arquivo para uma variável string, tive que usar o ADODB.Stream para que as palavras acentuadas não se transformassem em caracteres estranhos.[/*:m:3d3w29hv]
  • Na extração em si usei expressões regulares (Regex).[/*:m:3d3w29hv][/list:u:3d3w29hv]
  • Dá uma olhada e dê retorno.

     
Postado : 07/06/2018 7:34 pm
(@klebersonr)
Posts: 6
Active Member
Topic starter
 

Funcionou muito bem quando eu copio para o notepad++ . Quando copio do Bloco de Notas dá um erro que voce inseriu. Prezado sou de Joinville, mas morando em Boa Vista. Este tipo de programação consigo estudar aonde ?

 
Postado : 07/06/2018 10:03 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

E aí, conterrâneo!

Funcionou muito bem quando eu copio para o notepad++ . Quando copio do Bloco de Notas dá um erro que voce inseriu.

Por isso é tão importante vc enviar sempre a versão definitiva do que vc usa de fato. Me baseei no txt que vc anexou no início.

Imaginei que vc recebia/baixava esse txt do site, não que vc copiasse e colasse num editor de texto.

O fato é que por padrão, o Bloco de Notas já salva pro nosso formato latino, usando o padrão ASC-II =ANSI (abra-o e vá em Salvar Como e veja na caixa "Codificação" que já está pré-selecionado ANSI).

Por outro lado, no Notepad++, o padrão pré-selecionado é o UTF-8 (veja em Configurações>Preferências>Novo Documento>Codificação).

Isso faz com que alguns caracteres invisíveis (ou não) sejam inseridos no documento, então conforme o método de importação o texto sai deformado.

A importação no código que te enviei está para textos em UTF-8. Anexe então novamente o txt que vc colou no Bloco de Notas para readequarmos ou escolha Salvar Como e escolha UTF-8.
-----

Estou morando no Costa e Silva, mas temporariamente trabalhando em Indaial.

Bem, eu aprendi VBA por conta própria, pois já tinha familiaridade com a linguagem Basic, Turbo Basic, etc. Mas depende muito do propósito que vc tem, até onde vc quer chegar, se é um desafio ou se é apenas para resolver um ou outro problema isolado.

Se vc tem muita dificuldade para aprender programação e/ou não for do tipo auto-didata, inicie com um curso. Aulas particulares também podem ser interessantes se vc já saiu do básico elementar mas está enroscando em alguns aspectos conceituais.

Mas o principal é abrir o VBE, e usá-lo como uma bancada de testes, sem medo, testando pequenas funções na própria Janela Imediata ou em pequenos códigos, para depois, paulatinamente ir se aventurando em códigos mais extensos.

 
Postado : 08/06/2018 6:21 am
(@klebersonr)
Posts: 6
Active Member
Topic starter
 

Caro Edson,

Voce me fez dar uma estudada nesse trem. Ainda não consegui entender o regex e o código, ultima vez que programei foi na faculdade em Delphi.

Sobre a planilha modelo, a coluna K deve ser com "Modelo / Versão", e faltou uma L com a real "Descrição Detalhada do Objeto Ofertado". Ainda não consegui entender o código, falta papirar um pouco mais.

Não sabia da diferença de copiar e colar no bloco de notas e no notepad. O mais comum para todos é copiar para o bloco de notas. O link abaixo é uma pagina modelo de como os pregões aparecem para disponiveis para impressão.

http://comprasnet.gov.br/livre/pregao/F ... poPregao=E

Coloquei o arquivo .txt do bloco de notas também e o xlsm com a coluna adicional. Todavia não consegui adaptar o código.

-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x

Uso muito excel, por isso quero ampliar os conhecimentos e realizar mais rapidamente minhas atribuições. Sempre morei no Floresta quando morava em Joinville, mas fui embora em 1998, e depois só visitando os pais.

 
Postado : 12/06/2018 12:57 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bom dia, Kleberson.

Agora então ficou mais simples com o arquivo em ANSI (ASC-II) pois é o que é usado por padrão pelo Windows também (bloco de notas, etc.).

Segue alterações no anexo.

----------------
Mas agora fica outra sugestão para uma próxima etapa: por quê não buscar esses dados direto do site que vc citou no seu último post? Ao invés de baixar um PDF, abrir o PDF, copiar o conteúdo para a área de transferência, abrir um bloco de notas, colar, salvar pra depois importar, ficaria bem mais direto importar a tabela do próprio site do pregão, não acha?

 
Postado : 13/06/2018 8:52 am
(@klebersonr)
Posts: 6
Active Member
Topic starter
 

Caro Edson

Agora está muito padrão, fazendo o necessário. Estou papirando nas horas vagas VBA e tentando ententar o Regex. E vou usar teu código pra tentar entender o funcionamento.

----------------
Mas agora fica outra sugestão para uma próxima etapa: por quê não buscar esses dados direto do site que vc citou no seu último post? Ao invés de baixar um PDF, abrir o PDF, copiar o conteúdo para a área de transferência, abrir um bloco de notas, colar, salvar pra depois importar, ficaria bem mais direto importar a tabela do próprio site do pregão, não acha?

Quanto a sugestão, no meu meio de engenharia, é bem comum passar para o bloco de notas, salvar um txt de um PDF e depois importar. No caso usamos um software de orçamentação que para atualizar os Banco de Dados que são em PDF utilizamos estes artifícios. Desde 2007 que utilizamos ele e nunca foi implementado para fazer sozinho.
Mas a ideia é válida.

Uma das máximas aqui é que o bom é inimigo do ótimo. A macro está muito boa, o resto é florear !

Agradeço muito o apoio Edson, abraço.

 
Postado : 18/06/2018 10:42 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Voce me fez dar uma estudada nesse trem. Ainda não consegui entender o regex e o código, ultima vez que programei foi na faculdade em Delphi.

Estou papirando nas horas vagas VBA e tentando ententar o Regex. E vou usar teu código pra tentar entender o funcionamento.

Se precisar de algum auxílio ou não estiver entendendo algum conceito, poste sua dúvida que tentaremos "clarear as ideias".

Usar o Regex no VBA é um pouco chatinho no começo mas depois vale a pena. Ele tem alguns macetes que é bom levar em conta. Até pensei em fazer um tuto mas como não quero fazer nada meia-boca, preciso de tempo pra não abandonar o projeto depois de iniciado. Também não sei se haverá mais interessados em querer saber esse trem rsrsrs (já sei pra onde vc foi embora em 1998... só pode ter sido pra MG rsrsrsr).

 
Postado : 18/06/2018 3:00 pm
(@klebersonr)
Posts: 6
Active Member
Topic starter
 

Pior que eu sou do Brasil, só não morei no NE.

Estou testando Regex pelo link http://aprenda.vidageek.net/aprenda/regex

Vou tentar escrever as dúvidas em clarear ideias.

Obrigado Edson.

 
Postado : 25/06/2018 5:19 pm