no caso da parte "130918", o vba faz alguma verificação para saber se na posiçao 296 à 304 existe o numero "130918", ou verificação é para ver se existe um numero qualquer nesta posição?Reinaldo escreveu: ↑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.
Cada caractere corresponde a um numero na tabela ASCII (veja um exemplo/modelo em : "https://web.fe.up.pt/~ee96100/projecto/ ... 0ascii.htmpode me explicar também este>>..
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
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO-RESOLVIDO-
Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO
- Reinaldo
- Jedi
- Mensagens: 1537
- 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
Nessa proposta--> If Mid(L, 296, 6) = "130818" <-- e verificado se o conteúdo de 296 à 304 é igual a "130818"
A sintaxe da função mid é -->Mid(string, start[, length])<-- (similar a função deplanilha Ext.Texto)
E retorna um String(Texto) de seis caractere
A sintaxe da função mid é -->Mid(string, start[, length])<-- (similar a função deplanilha Ext.Texto)
E retorna um String(Texto) de seis caractere
Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO
Bom dia Sr Reinaldo, nesse caso, se eu usar somente a ultima parte, como condiçao, "ASCII" para verificar se ha Letras na posiçao '393', e não quiser verificar a data '130818' como condiçao, basta apenas eu apagar o "If mid"?Reinaldo escreveu: ↑Sex Mar 22, 2019 5:50 pm Nessa proposta--> If Mid(L, 296, 6) = "130818" <-- e verificado se o conteúdo de 296 à 304 é igual a "130818"
A sintaxe da função mid é -->Mid(string, start[, length])<-- (similar a função deplanilha Ext.Texto)
E retorna um String(Texto) de seis caractere
- Reinaldo
- Jedi
- Mensagens: 1537
- 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
Já não estou entendendo.
Para verificar se é letra deverá ser utilizado:
Esta linha separa o caractere da posição 393( midi(L,393,1), converte para maiúsculo UCase(...), e atribui valor ASCII Asc(...); a variavel xAsc recebe então esse valor.
xAsc = Asc(UCase(Mid(L, 393, 1)))
Esta linha verifica se o valor ASCII encontrado anteriormente está na range de letras
If xAsc > 64 And xAsc < 91 Then
Qual a real duvida/dificuldade então
Para verificar se é letra deverá ser utilizado:
Esta linha separa o caractere da posição 393( midi(L,393,1), converte para maiúsculo UCase(...), e atribui valor ASCII Asc(...); a variavel xAsc recebe então esse valor.
xAsc = Asc(UCase(Mid(L, 393, 1)))
Esta linha verifica se o valor ASCII encontrado anteriormente está na range de letras
If xAsc > 64 And xAsc < 91 Then
Qual a real duvida/dificuldade então
Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO
Ola sr Reinaldo, desculpa a falta de clareza, >>>'If Mid(L, 296, 6) = "130818" Then<<< esta parte funciona ou só é um comentario?Reinaldo escreveu: ↑Seg Mar 25, 2019 4:12 pm Já não estou entendendo.
Para verificar se é letra deverá ser utilizado:
Esta linha separa o caractere da posição 393( midi(L,393,1), converte para maiúsculo UCase(...), e atribui valor ASCII Asc(...); a variavel xAsc recebe então esse valor.
xAsc = Asc(UCase(Mid(L, 393, 1)))
Esta linha verifica se o valor ASCII encontrado anteriormente está na range de letras
If xAsc > 64 And xAsc < 91 Then
Qual a real duvida/dificuldade então
- Reinaldo
- Jedi
- Mensagens: 1537
- 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
No Vba toda linha que inicia com apostrofe " ' " é considerada como comentário ou texto explicativo.
Essa linha está comentada ('), deixei como exemplo para mostrar como será a sintaxe caso deseje verificar uma string(texto) maior com um valor especifico
As duas linhas são apenas comentários, podem ser excluídas sem prejuízo da rotina
Essa linha está comentada ('), deixei como exemplo para mostrar como será a sintaxe caso deseje verificar uma string(texto) maior com um valor especifico
As duas linhas são apenas comentários, podem ser excluídas sem prejuízo da rotina
'Verifica se o valor da string é o esperado
'If Mid(L, 296, 6) = "130818" Then[/cote]
Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO
Reinaldo escreveu: ↑Ter Mar 26, 2019 9:43 am No Vba toda linha que inicia com apostrofe " ' " é considerada como comentário ou texto explicativo.
Essa linha está comentada ('), deixei como exemplo para mostrar como será a sintaxe caso deseje verificar uma string(texto) maior com um valor especifico
As duas linhas são apenas comentários, podem ser excluídas sem prejuízo da rotina
Olá Sr Reinaldo, muito obrigado, foi o que pensei.'Verifica se o valor da string é o esperado
'If Mid(L, 296, 6) = "130818" Then[/cote]
Duvida Resolvida!
Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO-RESOLVIDO-
Boa tarde.
Aproveitando o tópico do colega, estou precisando de algo bem parecido.
No caso do tópico foi utilizado um if para verificar se na posição 393 do aqruivo é uma letra, caso sim a linha é copiada para a planilha.
No meu caso preciso verificar se na posição 296 é o número 130818.
No próprio código tem uma linha marcada como texto (If Mid(L, 296, 6) = "130818" Then) que poderia ser utilizado. Mas quando habilito ela e desabilito as linhas que não preciso (xAsc = Asc(UCase(Mid(L, 393, 1)))
'If xAsc > 64 And xAsc < 91 Then) os dados não vão para a planilha.
Alguém poderia esclarecer o que esta faltando?
Segue o código:
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
Close I
frmmenu.LBLSTATUS.Caption = "FORMATANDO DADOS"
Aproveitando o tópico do colega, estou precisando de algo bem parecido.
No caso do tópico foi utilizado um if para verificar se na posição 393 do aqruivo é uma letra, caso sim a linha é copiada para a planilha.
No meu caso preciso verificar se na posição 296 é o número 130818.
No próprio código tem uma linha marcada como texto (If Mid(L, 296, 6) = "130818" Then) que poderia ser utilizado. Mas quando habilito ela e desabilito as linhas que não preciso (xAsc = Asc(UCase(Mid(L, 393, 1)))
'If xAsc > 64 And xAsc < 91 Then) os dados não vão para a planilha.
Alguém poderia esclarecer o que esta faltando?
Segue o código:
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
Close I
frmmenu.LBLSTATUS.Caption = "FORMATANDO DADOS"
- Reinaldo
- Jedi
- Mensagens: 1537
- 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-RESOLVIDO-
Apenas pelo trecho informado da rotina, aparentemente nada direciona ao que foi relatado: "...os dados não vão para a planilha..."
porem como são variáveis utilizadas/referenciadas no trecho "W / Ln / Col / PTI (2 a 5) / PTF (2 a 5)" pode ser algo + abrangente
porem como são variáveis utilizadas/referenciadas no trecho "W / Ln / Col / PTI (2 a 5) / PTF (2 a 5)" pode ser algo + abrangente
Re: IMPORTAR TXT A PARTIR DE CERTA POSIÇÃO-RESOLVIDO-
Boa tarde Reinaldo.
O código, planilha e arquivo são os mesmos tópico inicial do colega LuizFeijo.
No código que vc criou a linha é importada para o Excel de acordo com a condição:
xAsc = Asc(UCase(Mid(L, 393, 1)))
If xAsc > 64 And xAsc < 91 Then
Gostaria de saber se é possível realizar a importação dessas linhas somente com a condição:
'If Mid(L, 296, 6) = "130818" Then
Obrigado pela atenção.
O código, planilha e arquivo são os mesmos tópico inicial do colega LuizFeijo.
No código que vc criou a linha é importada para o Excel de acordo com a condição:
xAsc = Asc(UCase(Mid(L, 393, 1)))
If xAsc > 64 And xAsc < 91 Then
Gostaria de saber se é possível realizar a importação dessas linhas somente com a condição:
'If Mid(L, 296, 6) = "130818" Then
Obrigado pela atenção.