Importar dados CSV para o Excel usando VBA: Um guia completo

Comma Separated Values (CSV) é um formato de ficheiro popular utilizado para armazenar e trocar dados entre diferentes aplicações. O Excel, sendo uma das aplicações mais utilizadas para análise de dados, requer um método eficiente para importar dados CSV. O VBA (Visual Basic for Applications) fornece uma forma poderosa e simples de o conseguir. Neste artigo, vamos guiá-lo através do processo de importação de dados CSV para o Excel utilizando VBA.

Passo 1: Abrir um novo livro de trabalho e criar um módulo Para começar, crie um novo livro de trabalho e clique no separador Programador. Clique no botão Visual Basic para abrir o editor VBA. No editor, crie um novo módulo clicando com o botão direito do rato na janela Explorador de projectos e seleccionando Inserir > Módulo.

Passo 2: Escrever o código VBA para importar dados CSV No novo módulo, escrever o código VBA para importar dados CSV. O seguinte trecho de código mostra como importar um arquivo CSV chamado “data.csv” localizado na pasta “C:Arquivos CSV”:

Sub ImportCSV()

Dim csvFile As String, ws As Worksheet

Dim fso As Object, ts As Object, arr As Variant

csvFile = “C:CSV Filesdata.csv”

Set fso = CreateObject(“Scripting.FileSystemObject”)

Set ts = fso.OpenTextFile(csvFile, 1)

arr = Split(ts.ReadAll, vbCrLf)

Set ws = ThisWorkbook.Sheets.Add

ws.Name = “Dados Importados”

For i = 0 To UBound(arr)

ws.Cells(i + 1, 1).Resize(1, UBound(Split(arr(i), “,”)) + 1).Value = Split(arr(i), “,”)

Next i

ts.Close

End Sub

Passo 3: Executar o código VBA para importar os dados CSV

Depois de escrever o código VBA, guarde o módulo e feche o editor. Volte para a planilha e execute o código VBA clicando no botão Macros na guia Desenvolvedor e selecionando a macro ImportCSV.

Agora que cobrimos o processo básico de importação de dados CSV usando o VBA, vamos abordar alguns problemas e desafios comuns.

Como abrir uma planilha com mais de 1 milhão de linhas?

Por padrão, o Excel só pode lidar com um máximo de 1.048.576 linhas. No entanto, o VBA pode ser usado para estender o limite. Para fazer isso, adicione o seguinte trecho de código antes de importar o arquivo CSV:

Application.SheetsInNewWorkbook = 1000000

Isso criará uma nova pasta de trabalho com 1.000.000 de linhas, que pode então ser usada para importar os dados CSV.

Como abrir um arquivo CSV muito grande?

Ao lidar com ficheiros CSV muito grandes, recomenda-se a utilização de um editor de texto ou de uma ferramenta especializada para dividir o ficheiro em partes mais pequenas. Essas partes podem então ser importadas para o Excel usando o VBA. Em alternativa, pode utilizar o seguinte fragmento de código para importar os dados CSV em partes:

Sub ImportCSVnChunks()

Dim csvFile As String, ws As Worksheet

Dim fso As Object, ts As Object, arr As Variant

csvFile = “C:CSV Filesdata.csv”

Set fso = CreateObject(“Scripting.FileSystemObject”)

Set ts = fso.OpenTextFile(csvFile, 1)

Set ws = ThisWorkbook.Sheets.Add

ws.Name = “Imported Data”

i = 0

Do Until ts.AtEndOfStream

arr = Split(ts.ReadLine, “,”)

ws.Cells(i + 1, 1).Resize(1, UBound(arr) + 1).Value = arr

i = i + 1

If i Mod 1000 = 0 Then DoEvents

Loop

ts.Close

End Sub

Este código importa os dados CSV em blocos de 1000 linhas, que podem ser ajustados de acordo com as suas necessidades.

Como manter os zeros à esquerda no CSV?

Por padrão, o Excel remove os zeros à esquerda ao importar dados CSV. Para manter os zeros à esquerda, pode formatar as células como texto antes de importar os dados. Para fazer isso, adicione o seguinte trecho de código antes de importar o arquivo CSV:

Set ws = ThisWorkbook.Sheets.Add

ws.Name = “Dados Importados”

ws.Range(“A1”).NumberFormat = “@”

Este código formata a primeira célula da nova planilha como texto, o que manterá os zeros à esquerda intactos.

Como guardar um ficheiro CSV separado por vírgulas?

Para guardar um ficheiro Excel como um ficheiro CSV separado por vírgulas, vá a Ficheiro > Guardar como e seleccione “CSV (delimitado por vírgulas) (*.csv)” como tipo de ficheiro. Clique no botão Guardar para guardar o ficheiro como um ficheiro CSV.

Como guardar um ficheiro CSV separado por ponto e vírgula?

Para guardar um ficheiro Excel como um ficheiro CSV separado por ponto e vírgula, vá a Ficheiro > Guardar como e seleccione “CSV (delimitado por vírgulas) (*.csv)” como o tipo de ficheiro. Clique no botão Ferramentas e seleccione “Opções da Web”. Na caixa de diálogo Opções da Web, vá para o separador “Codificação” e seleccione “Unicode (UTF-8)” como a codificação do ficheiro. Clique no botão OK para guardar as alterações. Agora, guarde o ficheiro como um ficheiro CSV. Os pontos e vírgulas serão utilizados como delimitadores em vez de vírgulas.

FAQ
Qual é a diferença entre CSV e xls?

CSV (Comma Separated Values) e XLS (Excel Spreadsheet) são dois formatos de ficheiro diferentes. O CSV é um formato de ficheiro de texto simples que armazena dados tabulares num formato simples, em que cada linha representa um registo e cada coluna representa um campo. XLS, por outro lado, é um formato de ficheiro binário específico do Microsoft Excel. Ele armazena dados em um formato mais complexo, incluindo fórmulas, formatação e gráficos. Enquanto os ficheiros XLS só podem ser abertos no Excel, os ficheiros CSV podem ser abertos em qualquer programa que suporte o formato, incluindo o Excel. Além disso, os ficheiros CSV são geralmente mais pequenos do que os ficheiros XLS e podem ser facilmente editados com um editor de texto.