Importando arquivos CSV para o Excel usando uma macro

4

Eu quero desenvolver uma macro onde na minha planilha do Excel eu digite uma data em uma célula específica, e a macro irá para uma pasta contendo arquivos de texto. Um banco de dados que você poderia dizer. Eu quero que ele encontre o nome do arquivo correspondente que é escrito como uma data, coloque os dados através de um delimitador e cole nas células diretamente abaixo de onde eu coloquei a data originalmente.

A pasta estará sempre no mesmo lugar e os arquivos de texto serão todos formatados DD_MM_YYYY. E as células abaixo estarão sempre vazias

Algumas fotos para tornar o que eu estou pedindo mais fácil de descobrir.

    
por B-Ballerl 08.01.2011 / 09:45

1 resposta

5

Isso é mais simples do que você imagina, porque você pode invocar o Assistente de Importação de Texto (ou melhor, você pode usar sua funcionalidade) dentro de uma macro, não há necessidade de escrever um analisador de CSV ou algo assim.

Na verdade, tudo que fiz com a macro abaixo é usar a função de gravação integrada e ajustá-la um pouco para atender às suas necessidades.

Usando a macro:

  1. Faça o backup do arquivo atual do Excel, caso algo dê errado.

  2. Altere a definição de folder na macro para ser o caminho que contém todos os seus arquivos de dados - inclua uma barra à direita.

  3. Selecione a célula de cabeçalho das colunas, que deve conter o nome de um dos seus arquivos - incluindo a extensão do arquivo . Você pode editar este campo depois que os dados forem carregados, caso deseje remover a extensão.

  4. Execute a macro.

Ações

Ele pegará o nome do arquivo da célula atual, procurará no folder especificado e abrirá esse arquivo especificado na célula. Em seguida, ele será importado como CSV, exatamente uma célula abaixo da célula selecionada (ao iniciar a macro).

Como tal, provavelmente irá sobrescrever as células abaixo da célula selecionada ao executar a macro - recomenda-se cautela.

Se o arquivo não for encontrado ou algum outro erro ocorrer, isso falhará com uma caixa de erro normal do VBA, sem mensagens de erro amigáveis.

Código de macro

Parte disso provavelmente pode ser aparada - como eu disse de uma gravação, em vez de aprender como usar o QueryTables de mim mesmo - mas não vai doer como é, e parece funcionar de forma confiável.

Sub LoadFromFile()
    Dim fileName As String, folder As String

    folder = "C:\Path\To\Your\Files\"
    fileName = ActiveCell.Value

    ActiveCell.Offset(1, 0).Range("A1").Select

    With ActiveSheet.QueryTables _
        .Add(Connection:="TEXT;" & folder & fileName, Destination:=ActiveCell)
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
    
por 11.01.2011 / 10:21