none
Erro ao importar uma data de um arquivo ".txt" com VBA RRS feed

  • Pergunta

  •    Tenho a linha de instrução abaixo de um código que uso para fazer a importação de arquivos ".txt para uma planliha via macro. E nesta linha de instrução importo as datas do relatório, porém para datas como por exemplo "02/10/13" o excel não os traz como texto e já converte para data como sendo "10/02/2013" e em casos como exemplo "13/10/13" o excel não faz a converção em data e deixa como texto mesmo, ou seja permanece "13/10/13"

    rg.Offset(0, 1) = Mid(S, 33, 8)

    Meu Objetivo

     Trazer o texto na célula já como data no padrão brasileiro e se não for possível deixar como texto mesmo e evitar que o excel faça a conversão automática.

    1ª Tentaiva Frustrada

    rg.Offset(0, 1) = CDate(Mid(S, 33, 8))

    Gera o "Erro 13", pois nem todas as strings do relatório nesta posição serão datas podem ser palavras ou hifens, po exemplo, "-----".

    Bem é isso, se necessário segue o código utilizado na integra abaixo.

    Public Sub ImportarTexto()
        Dim Arquivo As String
        
        With Application.FileDialog(msoFileDialogFilePicker)
            .Show
            Arquivo = .SelectedItems(1)
        End With
            
        Dim rg As Range
        Set rg = Range("A1")
        
        Open Arquivo For Input As #1
        
        Dim S As String
        Do Until EOF(1)
            Line Input #1, S
            
             rg.Offset(0, 0) = Mid(S, 17, 11)
             rg.Offset(0, 1) = Mid(S, 33, 8)
             rg.Offset(0, 2) = Mid(S, 55, 16)
             rg.Offset(0, 3) = Mid(S, 81, 14)
             rg.Offset(0, 4) = Mid(S, 95, 15)
             rg.Offset(0, 5) = Mid(S, 111, 14)
             rg.Offset(0, 6) = Mid(S, 126)
                     
            Set rg = rg.Offset(1, 0)
        Loop
        
        Close #1
    End Sub


    • Editado Tomadon sexta-feira, 18 de outubro de 2013 13:27 Revisão Texto
    sexta-feira, 18 de outubro de 2013 13:24

Respostas

  • Encontrei uma solução para trazer a Data como texto evitando assim a conversção automática para que eu posso tratar melhor depois com outro código, a linha de intrução que utilizei ficou assim:

     rg.Offset(0, 1) = CStr("'" + Mid(S, 33, 8))

    Att,

    Cristiano Tomadon

    • Marcado como Resposta Tomadon segunda-feira, 21 de outubro de 2013 18:34
    segunda-feira, 21 de outubro de 2013 18:33