Dica postada originalmente pelo site PC World e de extrema serventia para algumas situações que envolvam importação de grandes quantidades de dados no Microsoft Excel 2003 e versões anteriores. A versão 2007 já conta com uma quantidade mais generosa de linhas e colunas, tornando este problema menos frequente.
Importe arquivos muito grandes para o Excel
Rodolfo de Benito – PC WORLD/Espanha
09-01-2006
Tem uma lista muito grande que não cabe em uma planilha do Excel? Saiba como criar uma macro para quebrá-la em várias planilhas
As planilhas do Excel têm um limite de 65.536 linhas. Caso você tente importar dados de uma lista com mais itens que esse valor para um arquivo do Excel, receberá um aviso de que a planilha é incapaz de realizar a operação. Uma solução para esse problema é importar a parte dos dados que couber na primeira planilha e depois retomar o processo a partir do ponto onde parou em uma outra planilha do mesmo arquivo. Para isso, basta usar o campo “Iniciar importação na linha” presente na primeira tela do assistente de importação de texto. Se o arquivo ainda não couber em duas planilhas, repita o processo em quantas for necessário.
Para automatizar essa tarefa, é possível criar uma pequena macro em Visual Basic capaz de ler o arquivo dos dados e quebrá-lo em quantas planilhas for preciso. Clique em Ferramentas / Macro / Macros. Dê um nome para sua macro, por exemplo Importar TextosGrandes, e clique em Criar. No editor do Visual Basic que se abrirá, digite o seguinte código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Sub ImportarTextosGrandes() Dim ultimaFila, fila, contador As Long Dim linea, NomeArquivo As String 'Calcula a última linha da planilha Selection.End(xlDown).Select ultimaFila = Selection.Row Selection.End(xlUp).Select Set oSistemaArquivo = CreateObject("Scripting.FileSystemObject") 'Nome do arquivo a importar NomeArquivo = "C:\Windows\setuplog2.txt" Set arquivo = oSistemaArquivo.OpenTextFile(NomeArquivo, 1, False, -2) fila = 1 contador = 1 Do While arquivo.AtEndOfStream <> True linea = arquivo.ReadLine Cells(fila, "a").Value = linea 'Atualiza barra de status Application.StatusBar = "Lendo linha número = " & contador fila = fila + 1 contador = contador + 1 'Cria nova planilha quando planilha atual está cheia If fila > ultimaFila Then Worksheets.Add after:=ActiveSheet fila = 1 End If Loop End Sub |
Note que a variável NomeArquivo contém o caminho e o nome do arquivo onde estão os dados que serão importados. Criada a macro, para disparar a importação clique em Ferramentas / Macro / Macros. Clique no nome da macro criada e escolha Executar. Durante o processo, a barra de status indicará o número da linha em transferência.
Link original: http://pcworld.uol.com.br/dicas/2006/01/09/idgnoticia.2006-01-09.9646172645/
Tomás Vásquez
Olá, tudo bem?
Em VB 6 ou VB .Net é possível fazer o mesmo em arquivos muito grandes? Eu tenho um código que faz a mesma coisa mas que trava quando é em dot net mas no VBA do Excell funciona sem problemas.
tudo de bom,
Rodrigo
Rodrigo,
Vai depender muito de como o código está montado. Teoricamente, se o código é o mesmo em VB.NET, não teria porque haver problema no funcionamento pois o efeito é o mesmo, mas em outra linguagem.
Se quiser, envie o código para que possa dar uma olhada.
Abraços
Tomás Vásquez
Olá!
Estou á procura de uma macro que faça a importação de arquivos “.txt”…
Não entendo muito de VBA e por isso estou com problemas para solucionar esta questão…
Atenciosamente,
Paulinho Prata
Gostei muito deste macro, mais como eu faço para fazer a importação do texto separando as colunas por tabulação. Neste exemplo ele importa toda a linha na coluna A, gostaria que a linha fosse dividida em várias colunas, conforme a tabulação ou largura.
Marco,
Tem como, mas e melhor discutirmos no fórum:
http://www.tomasvasquez.com.br/forum
Nos vemos lá!
Tomás