Como posso importar automaticamente um csv para uma lista crescente no excel?

1

Todos os dias recebo um relatório em formato .csv e, diariamente, copio os dados para uma guia "INPUT" na planilha. Os dados nessa guia de entrada continuam crescendo a cada dia com as informações e eu importarei esses dados por:

  • Clicando na última linha da guia "INPUT"
  • Obter dados de texto externos
  • Importe o CSV com; como meu delimitador e inserindo os dados da linha 2 nas alas
  • Formate o texto na fonte Calibri 8pt

Os arquivos CSV que vêm em todos têm uma lista de convenção de nomes de incremento de datas, portanto:

20130826_Summary_Report.csv 
20130827_Summary_Report.csv
20130828_Summary_Report.csv

Provavelmente estamos analisando cerca de 5000 linhas de dados por dia e, embora não seja a tarefa mais demorada, estamos procurando maneiras de simplificar o processo.

Existe alguma maneira de criar uma macro que capture o arquivo .csv mais recente de uma pasta e importe os dados usando o processo acima automaticamente?

    
por K20GH 29.08.2013 / 10:11

1 resposta

1

Você pode usar o método Workbooks.OpenText para inserir em uma nova planilha, em seguida, o método Worksheets.Move para trazer para a pasta de trabalho atual (mesmo após a guia "INPUT").

Como você mencionou isso diariamente, uma forma de extrair automaticamente o arquivo .csv de hoje seria:

Dim inputfilepath As String
inputfile = ActiveWorkbook.Path & "\" & Format(Date, "yyyymmdd") & ".csv"
'open file
Workbooks.OpenText Filename:=inputfile

Você pode especificar parâmetros para .OpenText que definem os delimitadores .csv e outras opções que se ajustem ao seu arquivo .csv.

Você pode então começar a copiar para a última linha na guia "INPUT", encontrando automaticamente a última linha usando o método Range.end:

Worksheets("INPUT").Range("A1").End(xlDown).Offset(1).Select

Isso pressupõe que você não tem lacunas nas informações da coluna A e vai para a célula após a última célula com informações - o mesmo que selecionar A1 e, em seguida, fazer Ctrl-down.

    
por 29.08.2013 / 18:27