Notifications
Clear all

EXCEL converte automaticamente ponto em separador decimal.

2 Posts
2 Usuários
0 Reactions
672 Visualizações
(@dtoniato)
Posts: 1
New Member
Topic starter
 

Boa tarde, galera

Estou tentando programar um código que abra um arquivo da área de trabalho (pode ser .txt ou .xls) e copie os dados para uma aba específica:

Abaixo se encontra um exemplo do arquivo .txt que eu quero importar:

------------------------------------------------------------------------------------------------------------------------
| DtaRealFim|Ordem |Material|Texto breve material | Qtd.teór.| Qtd.forn.|Fim-base |Planj.MRP|
|----------------------------------------------------------------------------------------------------------------------|
| 13.04.2018|1112018320|12387807|X | 5.670 | 5.670 |12.04.2018|010 |
| 13.04.2018|1112018330|13233644|X | 864 | 864 |12.04.2018|010 |
| 13.04.2018|1112018331|12830236|X | 576 | 576 |12.04.2018|010 |
| 13.04.2018|1112018337|13894629|X | 1.296 | 1.296 |12.04.2018|010 |
| 13.04.2018|1112018338|12768241|X | 5.292 | 5.292 |12.04.2018|010 |
| 13.04.2018|1112068113|12087143|X | 3.990 | 3.990 |13.04.2018|010 |
| 13.04.2018|1112068115|12087143|X | 3.990 | 1.470 |16.04.2018|010 |
| 13.04.2018|1112068302|12087143|X | 4.830 | 4.830 |13.04.2018|010 |
| 13.04.2018|1112068304|12768241|X | 4.788 | 768 |13.04.2018|010 |
| 13.04.2018|1112068306|13605185|X | 288 | 288 |13.04.2018|010 |
| 13.04.2018|1112068309|13739597|X | 576 | 576 |13.04.2018|010 |
| 13.04.2018|1112068312|12823214|X | 2.880 | 1.200 |13.04.2018|010 |
| 13.04.2018|1112068316|13192420|X | 3.456 | 2.196 |13.04.2018|010 |

E este é o código que eu estou usando:

  Dim Ficheiro As String
    Dim Dpto As String
    
    Ficheiro = "C:Users" & VBA.Environ$("USERNAME") & "DesktopA.txt"
    
    Dim rg As Range
    Set rg = Range("A1")
    
    Open Ficheiro For Input As #1
    
    Dim S As String, N As Integer, C As Integer, X As Variant
    Do Until EOF(1)
        Line Input #1, S
        C = 0
        X = Split(S, "|")
        For N = 0 To UBound(X)
            If X(N) <> "" Then
                
                rg.Offset(0, C) = X(N)
                C = C + 1
            End If
        Next N
        Set rg = rg.Offset(1, 0)
    Loop
    
    Close #1
End Sub

O problema é que quando ele faz a cópia desses dados, ele automaticamente converte o ponto em separador decimal, e lê o número 5690 como 5,69.

E eu não posso simplesmente multiplicar por mil, após copiar para planilha, pois eu não saberia dizer se um 2 é realmente 2 ou era um 2000 que virou 2. Entendem? Não sei o que fazer para resolver, por favor me ajudem!

 
Postado : 17/04/2018 10:04 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Talvez assim

Sub txt()

Dim Ficheiro As String
Dim Dpto As String

Ficheiro = "C:Users" & VBA.Environ$("USERNAME") & "DesktopA.txt"
Dim rg As Range
Set rg = Range("A1")

Open Ficheiro For Input As #1

Dim S As String, N As Integer, C As Integer, X As Variant
Do Until EOF(1)
Line Input #1, S
C = 0
X = Split(S, "|")
For N = 0 To UBound(X)
If X(N) <> "" Or VBA.Left(X(N), 2) <> "--" Then
Select Case N
    Case 5, 6
     rg.Offset(1, C) = VBA.Replace(Trim(X(N)), ".", ",")
    Case Else
     rg.Offset(1, C) = Trim(X(N))
End Select
rg.Offset(0, C) = X(N)
C = C + 1
End If
Next N
Set rg = rg.Offset(1, 0)
Loop

Close #1
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/04/2018 12:25 pm