Ir para conteúdo
Fórum Script Brasil
  • 0

Aquivos Txt


jntk

Pergunta

huh.gif

Bom dia pessoal estou com um probleminha pra resolver e preciso da ajuda de todos e principalmente da de Deus.....

Tenho uma série de arquivos TXT nesse formato:

2                           0 2814340000181   0   0   0       0                                         0.00                                                                                                                                                                                                
3000241              01081                                  180.000     2158.20000             437.400      30 /  0                                                                                                                                                                                    
3000241              01212                                   12.000       95.16000               5.520      0 /  12                                                                                                                                                                                    
3000241              01421                                   16.000       52.16000              14.400      1 /  4                                                                                                                                                                                     
3000241              01425                                    4.000       27.68000              13.200      1 /  0                                                                                                                                                                                     
3000241              01703                                    7.000       19.67000               7.000      0 /  7                                                                                                                                                                                     
3000241              03034                                    4.000        7.68000               4.000      0 /  4                                                                                                                                                                                     
3000241              05515                                    1.000       29.00000               1.000      0 /  1                                                                                                                                                                                     
3000241              07909                                   11.000        8.80000               3.300      0 /  11                                                                                                                                                                                    
3000241              08011                                    3.000      153.39000              49.200      3 /  0                                                                                                                                                                                     
3000241              60013                                    4.000       32.84000               4.000      0 /  4                                                                                                                                                                                     

São cerca de mais de 4.000 ao todo.

Queria de alguma forma importar isso no access (mdb), ou no excel (xls) para poder consultar cada valor.

poderia importar isso no excel um por um, mas são 4.000!!!

Preciso de um código que importe isso automáticamente (todos), dividido por colunas (todos estão alinhados), ignorando a primeira linha e a última linha (pois tem algumas "sugeiras").

Ou importar em um único arquivo TXT (ignorando a primeira linha e a última)...

Se vocês copiarem isso no notepad sem quebra de linha, vão notar que estão todos alinhados um embaixo do outro.

Uma luz, preciso disso pra amanha, acreditam???rsrsrs

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Leia o arquivo utilizando as instruções Open e Input (você encontra exemplos aqui mesmo no fórum) e depois separe as linhas com Split() (se for o caso de ler o arquivo por completo ao invés de linha-a-linha) e utilize a funções Left(), Mid() e Right() para obter os campos de acordo com as suas posições iniciais e tamanhos (já que o arquivo está alinhado). Acredito que tudo isso você vá encontrar aqui mesmo no fórum, pesquisando.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Leia o arquivo utilizando as instruções Open e Input (você encontra exemplos aqui mesmo no fórum) e depois separe as linhas com Split() (se for o caso de ler o arquivo por completo ao invés de linha-a-linha) e utilize a funções Left(), Mid() e Right() para obter os campos de acordo com as suas posições iniciais e tamanhos (já que o arquivo está alinhado). Acredito que tudo isso você vá encontrar aqui mesmo no fórum, pesquisando.

Abraços,

Graymalkin

huh.gif

Todos os códigos que achei mostram como abrir um determinado arquivo. (C:\arquivo.txt).

Como faço para abrir todos os arquivos em uma determinada pasta, tipo um "*.txt"?

Link para o comentário
Compartilhar em outros sites

  • 0
Leia o arquivo utilizando as instruções Open e Input (você encontra exemplos aqui mesmo no fórum) e depois separe as linhas com Split() (se for o caso de ler o arquivo por completo ao invés de linha-a-linha) e utilize a funções Left(), Mid() e Right() para obter os campos de acordo com as suas posições iniciais e tamanhos (já que o arquivo está alinhado). Acredito que tudo isso você vá encontrar aqui mesmo no fórum, pesquisando.

Abraços,

Graymalkin

huh.gif

Todos os códigos que achei mostram como abrir um determinado arquivo. (C:\arquivo.txt).

Como faço para abrir todos os arquivos em uma determinada pasta, tipo um "*.txt"?

Utilize a função Dir() para obter todos os nomes de arquivos *.txt de uma determinada pasta e depois faça um loop para abrir cada um deles (com o código que você já tem, que abre apenas um). Exemplos da função Dir() você também encontrará aqui no fórum.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Leia o arquivo utilizando as instruções Open e Input (você encontra exemplos aqui mesmo no fórum) e depois separe as linhas com Split() (se for o caso de ler o arquivo por completo ao invés de linha-a-linha) e utilize a funções Left(), Mid() e Right() para obter os campos de acordo com as suas posições iniciais e tamanhos (já que o arquivo está alinhado). Acredito que tudo isso você vá encontrar aqui mesmo no fórum, pesquisando.

Abraços,

Graymalkin

huh.gif

Todos os códigos que achei mostram como abrir um determinado arquivo. (C:\arquivo.txt).

Como faço para abrir todos os arquivos em uma determinada pasta, tipo um "*.txt"?

Utilize a função Dir() para obter todos os nomes de arquivos *.txt de uma determinada pasta e depois faça um loop para abrir cada um deles (com o código que você já tem, que abre apenas um). Exemplos da função Dir() você também encontrará aqui no fórum.

Abraços,

Graymalkin

huh.gif

Cara, ta embaçado aki no trampo..rs...

Não sei como usar essa função dir para conseguir ler todos os arquivos da pasta.

Procurei no forum, mas não encontrei o que preciso.

Estou aceitando humildemente ajuda, e um teclado novo porque esse ta comendo o "r" e "o"...rs...

Link para o comentário
Compartilhar em outros sites

  • 0

huh.gif

Aproveitando esse tópico, tendo o código abaixo:

Dim loc As String
loc = item.Text

n = FreeFile()
Open "C:\011029.TXT" For Binary As #n
conteúdo = Input(LOF(n), n)
Close #n
'txt.Text = conteúdo

posição = InStr(1, conteúdo, loc)
If posição > 0 Then
    MsgBox "Achou!"
Else
    MsgBox "Não achou!"
End If

Gostaria de fazer com que ao achar o item solicitado (loc), ele copiasse a linha inteira do arquivo em uma variável qualquer.....

Help-me please, I need....

Link para o comentário
Compartilhar em outros sites

  • 0

huh.gif

Aproveitando esse tópico, tendo o código abaixo:

Dim loc As String
loc = item.Text

n = FreeFile()
Open "C:\011029.TXT" For Binary As #n
conteúdo = Input(LOF(n), n)
Close #n
'txt.Text = conteúdo

posição = InStr(1, conteúdo, loc)
If posição > 0 Then
    MsgBox "Achou!"
Else
    MsgBox "Não achou!"
End If

Gostaria de fazer com que ao achar o item solicitado (loc), ele copiasse a linha inteira do arquivo em uma variável qualquer..... Help-me please, I need....
Acho que seria melhor assim:
Dim loc As String
loc = item.Text

n = FreeFile()
Open "C:\011029.TXT" For Binary As #n
conteúdo = Input(LOF(n), n)
Close #n
linhas = split(conteúdo, vbcrlf)

linhadesejada = ""
for each linha in linhas
    posição = InStr(1, linha, loc)
    If posição > 0 Then
        linhadesejada = linha
        exit for
    End If
next linha

if linhadesejada<>"" then
    msgbox linhadesejada
else
    msgbox "Não achou!"
endif
O separador de linhas pode ser diferente do vbCrLf, podendo ser somente o vbCr ou somente o vbLf, por isso se não funcionar com o código acima experimente trocar. Quanto ao caso da função Dir(), segue um exemplo simples:
    pasta = "d:\temp\*.txt"
    
    arquivo = Dir(pasta)
    Do While arquivo <> ""
        Debug.Print arquivo
        arquivo = Dir
    Loop

Certo? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

huh.gif

Muuuitoo bom, valeu cara.

Os dois códigos funcionam corretamente, só que separados.

Tentei mesclar os dois códigos mas não consegui.

Ele não acha o valor dentro do arquivo, não sei o que fiz ou deixei de fazer.


Dim loc As String

loc = item.Text
pasta = "c:\teste\*.txt"
arquivo = Dir(pasta)
n = FreeFile()

Do While arquivo <> ""
'MsgBox arquivo
'Open "C:\011029.TXT" For Binary As #n
Open arquivo For Binary As #n
conteúdo = Input(LOF(n), n)
Close #n
linhas = Split(conteúdo, vbCrLf)

linhadesejada = ""
For Each linha In linhas
   posição = InStr(1, linha, loc)
   If posição > 0 Then
       linhadesejada = linha
       Exit For
   End If
Next linha

If linhadesejada <> "" Then
   MsgBox linhadesejada
   arquivo = Dir
Else
   MsgBox "Não achou!"
   arquivo = Dir
End If

Loop

Se puderem me ajudar mais uma vez, ficarei grato.

Link para o comentário
Compartilhar em outros sites

  • 0
huh.gif

Muuuitoo bom, valeu cara.

Os dois códigos funcionam corretamente, só que separados.

Tentei mesclar os dois códigos mas não consegui.

Ele não acha o valor dentro do arquivo, não sei o que fiz ou deixei de fazer.


Dim loc As String

loc = item.Text
pasta = "c:\teste\*.txt"
arquivo = Dir(pasta)
n = FreeFile()

Do While arquivo <> ""
'MsgBox arquivo
'Open "C:\011029.TXT" For Binary As #n
Open arquivo For Binary As #n
conteúdo = Input(LOF(n), n)
Close #n
linhas = Split(conteúdo, vbCrLf)

linhadesejada = ""
For Each linha In linhas
   posição = InStr(1, linha, loc)
   If posição > 0 Then
       linhadesejada = linha
       Exit For
   End If
Next linha

If linhadesejada <> "" Then
   MsgBox linhadesejada
   arquivo = Dir
Else
   MsgBox "Não achou!"
   arquivo = Dir
End If

Loop

Se puderem me ajudar mais uma vez, ficarei grato.
huh.gif Achei o erro!!! Estava mandando abrir o arquivo, mas não indicando o caminho do mesmo. Resolvi fazendo assim:
arq = "C:\teste\" & arquivo
Open arq For Binary As #n
Ao invés de:
Open arquivo For Binary As #n

Link para o comentário
Compartilhar em outros sites

  • 0

huh.gif

Agora como faço para o VB reconhecer espaços?

Pois entre um número e outro tem muito espaço.

Como dominuir ou ignorar o espaço depois de um determinado número.

No arquivo está algo como:

"3011029.....................03196...............................................1.000.....................14.20000............................................"

Reconheça os pontos como espaços, (pois postei com espaço e houve uma função que removeu o mesmo, e tive de editar)

Aguardo por mais ajuda...

Link para o comentário
Compartilhar em outros sites

  • 0

No caso, não existem "colunas", já que não existe um "separador de colunas". Só existem linhas porque existe um separador de linhas (que é formado por dois caracteres: chr(13) + chr(10)). Mas, creio que simplesmente ver qual é o 22º (vigésimo-segundo) caracter de uma linha deva servir, certo? Se for o caso, é só fazer:

caracter = mid(linha, 22, 1)

Onde "linha" é uma string com a linha, 22 é a posição inicial e 1 é a quantidade de caracteres a serem retornados a partir da posição inicial.

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...