ATENÇÃO NOVOS USUÁRIOS

Se registrou recentemente? Seu cadastro será avaliado e mendiante aprovação, a conta será ativada e você poderá usufruir do fórum. O tempo de avaliação gira em torno de 24 a 48 horas.

Esqueceu sua senha?

Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO-RESOLVIDO-

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
LuizFeijo
Colaborador
Colaborador
Mensagens: 21
Registrado em: Dom Nov 18, 2018 6:08 pm

IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO-RESOLVIDO-

Mensagem por LuizFeijo » Dom Mar 17, 2019 10:05 pm

ola genios do excel, preciso importar arquivos bancarios em formato txt, mais como nesses arquivos existem informaçoes como cabeçalho, remessa, eu preciso que o vba só importe a linha se na posiçao 393 existir caractere, se nao existir nao importe a linha,faça isso até que na posição 393 não tenha mais caractere, segue em anexo o arquivo bancario.
Anexos
ITAU010219.rar
(6.57 KiB) Baixado 97 vezes
Editado pela última vez por LuizFeijo em Ter Mar 26, 2019 10:06 am, em um total de 1 vez.



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Wagner Morel
Manda bem
Manda bem
Mensagens: 107
Registrado em: Qua Nov 29, 2017 11:51 am
Localização: Fortaleza - CE

Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO

Mensagem por Wagner Morel » Seg Mar 18, 2019 11:36 am

LuisFeijo,

Bom dia!

Tentei baixar seu arquivo mas... ocorreu um tipo de erro. Tem como compactar com .ZIP?


Atenciosamente,
Wagner Morel

LuizFeijo
Colaborador
Colaborador
Mensagens: 21
Registrado em: Dom Nov 18, 2018 6:08 pm

Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO

Mensagem por LuizFeijo » Seg Mar 18, 2019 1:06 pm

olá wagner, anexei como zip nesta mensagem.
Anexos
ITAU010219.zip
(6.94 KiB) Baixado 104 vezes



Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1422
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO

Mensagem por Reinaldo » Ter Mar 19, 2019 2:46 pm

Voçe tem o layout de importação desse arquivo? Pois aparentemente são campos de largura fixa e quando não tem dados são preenchidos (aparentemente) com espaço, assim ficar contando onde é a posição X e osso


Reinaldo
:oops: :D :mrgreen: :geek:

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


LuizFeijo
Colaborador
Colaborador
Mensagens: 21
Registrado em: Dom Nov 18, 2018 6:08 pm

Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO

Mensagem por LuizFeijo » Ter Mar 19, 2019 6:33 pm

Reinaldo escreveu:
Ter Mar 19, 2019 2:46 pm
Voçe tem o layout de importação desse arquivo? Pois aparentemente são campos de largura fixa e quando não tem dados são preenchidos (aparentemente) com espaço, assim ficar contando onde é a posição X e osso
Olá Srº Reinaldo, muito bom vê-lo novamente! sim, o layout do aquivo retorno é composto por 400 caracteres cada linha, e os espaços em branco também contam como caracteres!
Eu anexei a planilha que utilizo para realizar a importação do .TXT e um arquivo .txt - este arquivo tem no máximo 10 linhas, eu editei o arquivo de uma forma sucinta, (lembrando que o senhor tem que desmarcar a quebra automática de linha do TXT) para ver como é o padrão do arquivo. Após isso, se o senhor for para o fim das linhas "lado direito", vai ver mais ou menos desse jeito:

00000000000000000000000FABIANO S DA SILVA MERCADINHO 000002
00000000000000000000000FABIANO S DA SILVA MERCADINHO 000003
13091800000000000000000000000LESANDRO PEREIRA DA SILVA SUPE CK000107
13091800000000000000000000000PAG MENOS SUPERMERCADO 4 LTDA CK000108
13091800000000000000000000000PAG MENOS SUPERMERCADO LTDA B7000109

se voce perceber, no arquivo, antes dos zeros da pessoa LESANDRO PERERIRA- existe o numero 130918, e no fim em negrito, antes do 000107 tem LEtras, "CK".

Entao eu preciso que o vba importe as linhas apenas que tenham essa data "130918" ou as que na posiçao 393 "CK000107" tem caractere.
Anexos
XMLITAU1.zip
(426.92 KiB) Baixado 93 vezes



Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1422
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO

Mensagem por Reinaldo » Qua Mar 20, 2019 3:10 pm

Creio que entendi
Veja se atende;
o primeiro if que esta comentado, verifica se na string da posição 296 até 302 corresponde a 130818

O Segundo if, seleciona o caractere da posição 393 e verifica se e letra

Código: Selecionar todos

'Verifica se o valor da string é o esperado
'If Mid(L, 296, 6) = "130818" Then

'Seleciona o caractere na posição 393 e verifia se e letra
    xAsc = Asc(UCase(Mid(L, 393, 1)))
    If xAsc > 64 And xAsc < 91 Then
        W.Cells(LN, COL).Value = Mid$(L, PTI1, PTF1)
        W.Cells(LN, COL + 1).Value = Mid$(L, PTI2, PTF2)
        W.Cells(LN, COL + 2).Value = Mid$(L, PTI3, PTF3)
        W.Cells(LN, COL + 3).Value = Mid$(L, PTI4, PTF4)
        W.Cells(LN, COL + 4).Value = Mid$(L, PTI5, PTF5)
        LN = LN + 1
    End If
Loop


Reinaldo
:oops: :D :mrgreen: :geek:

LuizFeijo
Colaborador
Colaborador
Mensagens: 21
Registrado em: Dom Nov 18, 2018 6:08 pm

Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO

Mensagem por LuizFeijo » Qui Mar 21, 2019 7:54 am

Bom dia Sr Reinaldo, na minha planilha estou usando o comando 'DO WHILE'

Do While Not EOF(I)

frmmenu.LBLSTATUS.Caption = "PROCESSANDO LINHA:" & LN - 1
DoEvents

Line Input #I, L

W.Cells(LN, COL).Value = Mid$(L, PTI1, PTF1)
W.Cells(LN, COL + 1).Value = Mid$(L, PTI2, PTF2)
W.Cells(LN, COL + 2).Value = Mid$(L, PTI3, PTF3)
W.Cells(LN, COL + 3).Value = Mid$(L, PTI4, PTF4)
W.Cells(LN, COL + 4).Value = Mid$(L, PTI5, PTF5)

LN = LN + 1

Loop

Aonde eu devo substituir, o meu comando?



Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1422
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO

Mensagem por Reinaldo » Qui Mar 21, 2019 11:01 am

Logo apos o Do While

Código: Selecionar todos

'INSERIR DADOS NA PLANILHA
'-------------------------------------------------------------
Do While Not EOF(I)

    frmmenu.LBLSTATUS.Caption = "PROCESSANDO LINHA:" & LN - 1
    DoEvents
    
    Line Input #I, L
'Verifica se o valor da string é o esperado
'If Mid(L, 296, 6) = "130818" Then

'Seleciona o caractere na posição 393 e verifia se e letra
    xAsc = Asc(UCase(Mid(L, 393, 1)))
    If xAsc > 64 And xAsc < 91 Then
        W.Cells(LN, COL).Value = Mid$(L, PTI1, PTF1)
        W.Cells(LN, COL + 1).Value = Mid$(L, PTI2, PTF2)
        W.Cells(LN, COL + 2).Value = Mid$(L, PTI3, PTF3)
        W.Cells(LN, COL + 3).Value = Mid$(L, PTI4, PTF4)
        W.Cells(LN, COL + 4).Value = Mid$(L, PTI5, PTF5)
        LN = LN + 1
    End If
Loop
Anexos
XMLITAU1_teste.zip
(426.87 KiB) Baixado 94 vezes


Reinaldo
:oops: :D :mrgreen: :geek:

LuizFeijo
Colaborador
Colaborador
Mensagens: 21
Registrado em: Dom Nov 18, 2018 6:08 pm

Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO

Mensagem por LuizFeijo » Qui Mar 21, 2019 1:33 pm

Reinaldo escreveu:
Qui Mar 21, 2019 11:01 am
Logo apos o Do While

Código: Selecionar todos

'INSERIR DADOS NA PLANILHA
'-------------------------------------------------------------
Do While Not EOF(I)

    frmmenu.LBLSTATUS.Caption = "PROCESSANDO LINHA:" & LN - 1
    DoEvents
    
    Line Input #I, L
'Verifica se o valor da string é o esperado
'If Mid(L, 296, 6) = "130818" Then

'Seleciona o caractere na posição 393 e verifia se e letra
    xAsc = Asc(UCase(Mid(L, 393, 1)))
    If xAsc > 64 And xAsc < 91 Then
        W.Cells(LN, COL).Value = Mid$(L, PTI1, PTF1)
        W.Cells(LN, COL + 1).Value = Mid$(L, PTI2, PTF2)
        W.Cells(LN, COL + 2).Value = Mid$(L, PTI3, PTF3)
        W.Cells(LN, COL + 3).Value = Mid$(L, PTI4, PTF4)
        W.Cells(LN, COL + 4).Value = Mid$(L, PTI5, PTF5)
        LN = LN + 1
    End If
Loop
Boa Tarde Sr Reinaldo, funcionou! é exatamente o que preciso. SE não for pedir muito, o Sr pode me explicar oque significa,qual a logica de 'If Mid(L, 296, 6) = "130818" Then (nesse caso como está com aspas '' ela não é uma variável não é? é só uma "explicação"?

pode me explicar tambem este>> xAsc = Asc(UCase(Mid(L, 393, 1))) -- If xAsc > 64 And xAsc < 91 Then



Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1422
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO

Mensagem por Reinaldo » Qui Mar 21, 2019 9:42 pm

Na posição 296 à 304 encontra-se o campo que"negritou" em seu post anterior "13091800000000000..."
assim o "valor" está entre aspas pois o retorno e strings(texto), deixei comentado apenas como deve ser a sintaxe se quiser/necessitar utilizar esse local para comparação.
pode me explicar também este>>..
Cada caractere corresponde a um numero na tabela ASCII (veja um exemplo/modelo em : "https://web.fe.up.pt/~ee96100/projecto/ ... 0ascii.htm
As letras de nosso alfabeto (maiúsculas) vão de 65 à 90 por isso se xAsc estiver nesse intervalo, o caractere da posição corresponde a uma letra


Reinaldo
:oops: :D :mrgreen: :geek:

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder