Notifications
Clear all

Trocar zeros por espaços

6 Posts
2 Usuários
0 Reactions
1,409 Visualizações
(@vaggnersf)
Posts: 34
Trusted Member
Topic starter
 

Pessoal com esse código estou gerando esse txt abaixo, mais o código preenche os espaços com zeros.
Preciso que onde tenha espaços deixe com espaços. E não como está fazendo, preenchendo com zeros.

Sub teste()
    Dim i As Integer
    Dim Arquivo As String
    Dim Wf As WorksheetFunction
    Dim numero As String
    Dim Dt As String
    Dim Trd As String
    Dim Trde As String
    Dim Vlr As String
    Dim Htr As String
    Dim Testeses As String
             
    Set Wf = WorksheetFunction
    Arquivo = "C:Tempteste.m11" 
    Sequencial = 1
    Open Arquivo For Output As #1
   
    For i = 1 To ActiveSheet.UsedRange.Rows.Count
        numero = Format(Cells(i, "a").Value, Wf.Rept("0", 7))
        Dt = Cells(i, "b").Value
        Dt = Format(Dt, "dd/mm")
        Trd = Format(Cells(i, "c").Value, Wf.Rept("0", 7))
        Trde = Format(Cells(i, "d").Value, Wf.Rept("0", 7))
        Vlr = Format(Cells(i, "e").Value * 100, Wf.Rept("0", 16))
       Vlr = Left(Vlr, 14) & "." & Right(Vlr, 2) 
        Htr = Format(Cells(i, "f").Value, Wf.Rept("0", 5))
        Testeses = Cells(i, "g").Value
        
        Print #1, numero & Dt & Trd & Trde & Vlr & Htr & Testeses & Wf.Rept(" ", 200 - Len(Testeses)) 
    Next
       
    Close
End Sub

Txt com os espaços preenchido por zeros! O codigo esta gerando assim!

000000229/080200939009235000000000000144.7500038135910 EXPRESSO 000000329/080200939009235000000000000125.4800038135917 EXPRESSO 000000429/080200939009235000000000000152.0200038136114 EXPRESSO

Exemplo como tem que ficar o txt! Aqui tenho os caracteres preenchido por espaços
229/08____200939____ 92350_____144.75 38135910 EXP
329/08____200939____ 92350_____125.48 38135917 EXP
429/08 ____200939____ 92350_____152.02 38136114 EXP

 
Postado : 28/11/2016 10:56 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

A "repetição"/complementação com zeros ocorre com a função rept("0",...) ou seja complementa com zeros onde não há valor algum, não há inclusive espaços.
Assim se quiser substituir o Zero por espaço, altere wf.rept("0",...) por wf.Rept(" ",...)
Se não for isso, forneça maiores detalhes

 
Postado : 28/11/2016 12:20 pm
(@vaggnersf)
Posts: 34
Trusted Member
Topic starter
 

A "repetição"/complementação com zeros ocorre com a função rept("0",...) ou seja complementa com zeros onde não há valor algum, não há inclusive espaços.
Assim se quiser substituir o Zero por espaço, altere wf.rept("0",...) por wf.Rept(" ",...)
Se não for isso, forneça maiores detalhes

Neste caso alterando esse campo e rodando o codigo gera um arquivo em branco

Ele teria que gerar a quantidade de caracteres que é determinado para cada coluna.

Se a coluna pede 7 caracteres, pega os numero que consta nela e complementa o restante com espaço.

Assim respeitando o Leiaute !

Neste como pode ver ele preenche o restante com zero. Nao pode! Tem que ser com espaço

 
Postado : 28/11/2016 12:35 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Talvez assim:

For i = 1 To ActiveSheet.UsedRange.Rows.Count
    numero = Wf.Rept(" ", 7 - Len(Cells(i, "a"))) & Cells(i, "a").Value
    Dt = Format(Cells(i, "b").Value, "dd/mm")
    Trd = Wf.Rept(" ", 7 - Len(Cells(i, "c"))) & Cells(i, "c").Value
    Trde = Wf.Rept(" ", 7 - Len(Cells(i, "d"))) & Cells(i, "d").Value
    Vlr = Left(Cells(i, "e") * 100, Len(Cells(i, "e") * 100) - 2) & "." & Right(Cells(i, "e") * 100, 2)
    Vlr = Wf.Rept(" ", 15 - Vlr)
    Htr = Wf.Rept(" ", 5 - Len(Cells(i, "f"))) & Cells(i, "f").Value
    Testeses = Cells(i, "g").Value
 
Postado : 28/11/2016 1:27 pm
(@vaggnersf)
Posts: 34
Trusted Member
Topic starter
 

Talvez assim:

For i = 1 To ActiveSheet.UsedRange.Rows.Count
    numero = Wf.Rept(" ", 7 - Len(Cells(i, "a"))) & Cells(i, "a").Value
    Dt = Format(Cells(i, "b").Value, "dd/mm")
    Trd = Wf.Rept(" ", 7 - Len(Cells(i, "c"))) & Cells(i, "c").Value
    Trde = Wf.Rept(" ", 7 - Len(Cells(i, "d"))) & Cells(i, "d").Value
    Vlr = Left(Cells(i, "e") * 100, Len(Cells(i, "e") * 100) - 2) & "." & Right(Cells(i, "e") * 100, 2)
    Vlr = Wf.Rept(" ", 15 - Vlr)
    Htr = Wf.Rept(" ", 5 - Len(Cells(i, "f"))) & Cells(i, "f").Value
    Testeses = Cells(i, "g").Value

O valor não esta gerando, e não consegui arrumar!

O restante do código deu certo.

 
Postado : 28/11/2016 2:15 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Efetuar uma proposta sem poder testar e complicado; mas experimente
Vlr = Wf.Rept(" ", 15 - Vlr)&Vlr

 
Postado : 29/11/2016 5:45 am