none
Editar Arquivo TXT com VB RRS feed

  • Pergunta

  • Dim T as long
    Dim c as string
    dim variavel as string
    dim texto as string
    
    CaminhoArquivo = "E:\CONCILIAÇÃO\Importar TXT FCONT\ArquivoTXT\INVICTA 01_01 A 31_03_2011.txt"
    
    open  Open CaminhoArquivo for input as #1
    T = 0
    C= ""
    while not eof(1)
    line input #1, variavel
    If Mid(variavel, 1, 5) = "|I150" Then 
    T = T + 1
    C = "/" & T
    variavel = variavel & T
    else
    If Mid(variavel, 1, 5) = "|I350" Then 
    C=""
    End If
    variavel = variavel & C
    texto = texto & variavel
    wend
    close #1
    open "C:\temp\teste.txt" for output as #1
    write #1, texto
    close #1

    Bom Dia

    Como posso editar esse codigo para fazer as alterações como descrito abaixo. 

    Exemplo: tenho um txt e preciso fazer a seguinte modificação: 

    toda vez que ele encontrar a linha que comece com I150 , que carrega o trimestre (primeira Linha no caso de 01/10/2011 a 31/12/2011) quero que ele coloque o numero do trimestre no final das linhas posteriores

    |I150|01102011|31122011|
    |I155|5||116162,24|D|116862,80|140574,52|92450,52|D|
    |I156|1.01.01.01.00|116862,80|140574,52|
    |I155|671||13270,68|D|235216,99|153592,22|94895,45|D|
    |I156|1.01.01.02.00|235216,99|153592,22|
    |I155|673||15089,90|D|79,80|15169,70|0,00|D|
    |I156|1.01.01.02.00|79,80|15169,70|

    Resultado
    |I150|01102011|31122011|4
    |I155|5||116162,24|D|116862,80|140574,52|92450,52|D|4
    |I156|1.01.01.01.00|116862,80|140574,52|4
    |I155|671||13270,68|D|235216,99|153592,22|94895,45|D|4
    |I156|1.01.01.02.00|235216,99|153592,22|4
    |I155|673||15089,90|D|79,80|15169,70|0,00|D|4
    |I156|1.01.01.02.00|79,80|15169,70|4

    Obrigado

    terça-feira, 28 de maio de 2013 12:35

Todas as Respostas

  •     Dim linha As String
        Dim vtr() As String
        Dim tri As Integer
        Dim nTexto As String
        nTexto = ""
        
        Dim CaminhoArquivo As String
        
        CaminhoArquivo = "D:\teste.txt"
        
        Open CaminhoArquivo For Input As #1
        
        While Not EOF(1)
        Line Input #1, linha
            
            ' recorta o conteudo da variavel, linha, considerando a barra em pé cmo o separador de cada posicao do vetor
            vtr = Split(linha, "|")
            
            If vtr(1) = "I150" Then
                
                ' estou tomando por definidor o mes da data final pra informar qual o trimestre
                tri = CInt((Mid(vtr(3), 3, 2) + 1) / 3)
                
            ElseIf vtr(0) = "I350" Then
                
                ' adaptei o codigo sem considerar este valor, vc adapta ele por aí de acordo com sua necessidade... :)
            End If
            
            nTexto = nTexto & linha & tri & vbNewLine
        
        Wend
        
        Close #1
        
        Open "D:\teste1.txt" For Output As #1
        Print #1, nTexto
        TextBox1.text = nTexto
        Close #1

    Boa noite, amigo...

    Teste este código que fiz pra o teu caso... tipo... só não cheguei a preencher o conteúdo do ELSEIF, será interessante vc entender o código e adaptar esta segunda condição de acordo com sua necessidade... :)

    Qualquer dúvida só perguntar aí... :)

    Espero ter ajudado, e se te serviu não deixa de escolher como resposta... ^^

    quarta-feira, 29 de maio de 2013 00:42