Notifications
Clear all

Importar CSV - Erro #DESPEJAR

1 Posts
1 Usuários
0 Reactions
747 Visualizações
Shylock
(@shylock)
Posts: 1
New Member
Topic starter
 

Olá, pessoal! Criei uma pequena macro para importar arquivos CSV (que, depois, é copiado para outra guia). Uma das colunas desses arquivos é relativo à diferença de tempo. Na primeira linha desta coluna, aparece o melhor tempo. Nas seguintes, as diferenças em relação a essa primeira (Ex.: C1="1:30:37.417"; C2="+0:00:340"...). O problema está nesse sinal de "+"! A planilha interpreta como uma fórmula é coloca o sinal de "=" antes, ocasionando um erro, geralmente, #DESPEJAR. Manualmente, é claro, é fácil corrigir, mas, eu gostaria de uma solução dentro da macro de importação. Agradeço desde já, a ajuda, e segue a parte da macro:

Sub ImportarCSV()

    Dim filename__path As Variant
    Dim ws As Worksheet
    Dim xConnect As Object
    
    Application.ScreenUpdating = False ' Para de atualizar a tela para executar as funções
    
    ' Aqui usamos uma janela de "Abrir Arquivo" para pegar o nome do arquivo csv que será importado
    filename__path = Application.GetOpenFilename(FileFilter:="Csv (*.CSV), *.CSV", Title:="Escolha o arquivo CSV")
    If filename__path = False Then Exit Sub ' Há 2 validações, se o arquivo é CSV e se algum arquivo foi selecionado

    Set ws = ThisWorkbook.Sheets("CSV") 'Seleciona a folha "CSV"
    
    ws.Cells.Clear 'Limpa o conteúdo de toda a folha

    'Importamos o arquivo CSV escolhido na aba "CSV" celula A1
    With ws.QueryTables.Add(Connection:="TEXT;" & filename__path, Destination:=ws.Range("A1"))
        .TextFileParseType = xlDelimited
        .TextFilePlatform = 65001
        .TextFileCommaDelimiter = True
        .Refresh
    End With
    
    CopiarTabela 'Chama a função CopiarTabela para passar a tabela ao endereço correto em Info Corridas
    

    For Each xConnect In ActiveWorkbook.Connections
    If xConnect.Name <> "ThisWorkbookDataModel" Then xConnect.Delete 'Limpa a conexão feita com o CSV
    Next xConnect
    
    MsgBox ("Arquivo importado com sucesso!") 'Avisamos ao usuário que deu tudo certo
    
    Application.ScreenUpdating = True 'Volta a atualizar a tela
    
End Sub
 
Postado : 01/02/2022 2:24 pm