Notifications
Clear all

Copyfromrecordset limite planilha Excel

4 Posts
3 Usuários
0 Reactions
1,593 Visualizações
(@fabioferreiracs)
Posts: 1
New Member
Topic starter
 

Senhores, bom dia

estou usando SQL dentro do VBA Excel para acessar um enorme banco de dados do Acess via DAO. Como resultado da minha consulta SQL no VBA tenho um resultado composto de milhões de registros.
Preciso importar estes arquivos da consulta para uma planilha do Excel 2007. Utilizo o método CopyfromRecordset para fazer esta importação. PROBLEMA: quando a consulta retorna mais registros que o número máximo de linhas permitidas pelo Excel 2007 ( o que acontece muito) .

Alguem poderia me orientar como proceder para "quebrar" a importação em mais de 1 planilha com o CopyfromRecordset ?
Eu sei que atraves do código VBA eu poderia fazer isto (sem usar o copyfromrecordset) , mas como achei este comando fantastico, queria aproveita-lo.

Obrigado.

 
Postado : 08/08/2012 5:43 am
(@lovera)
Posts: 90
Estimable Member
 

Eu apelava e mudava a versão para o Excel 2010. Pelo menos é mais dificil se deparar com a situação limite de linhas.

Fico aguardando uma resposta tambem.
Fiquei curioso.

 
Postado : 22/09/2012 5:41 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

a lógica:
crie uma matriz em tempo de execução que receberá todo o conteúdo do recordset
crie outra matriz redimensionável com limite de um milhão de linhas, e passe de uma matriz pra outra, os registros um a um, campo a campo.
Acredite, matrizes são muito rápidas.

Ao término de cada matriz, coloque-as no objeto range da planilha escolhida, com uma linha de código equivalente ao copyfromrecordset

isso funciona sim... mas ..... tipo, apesar do algoritmo ser bom, poxa, muitas planilhas com um milhão de linhas cada, vai deixar seu arquivo mega pesado, eu não sugiro isso não.... uma opção, sem vba, é de filtras os dados para diminuir o resultado que vem da base, de acordo com o conteúdo de uma célula... é possível sem vba, e com vba, claro...

E Lovera, quanto ao numero de linhas...
2003 - 65.536
2007, 2010 e 2013 1.048.576

Fabio, se ainda estiver trabalhando neste projeto, e quiser ainda quiser uma mãozinha, é só avisar.

Falow.

 
Postado : 04/05/2013 12:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

a lógica:
crie uma matriz em tempo de execução que receberá todo o conteúdo do recordset
crie outra matriz redimensionável com limite de um milhão de linhas, e passe de uma matriz pra outra, os registros um a um, campo a campo.
Acredite, matrizes são muito rápidas.

Ao término de cada matriz, coloque-as no objeto range da planilha escolhida, com uma linha de código equivalente ao copyfromrecordset

isso funciona sim... mas ..... tipo, apesar do algoritmo ser bom, poxa, muitas planilhas com um milhão de linhas cada, vai deixar seu arquivo mega pesado, eu não sugiro isso não.... uma opção, sem vba, é de filtras os dados para diminuir o resultado que vem da base, de acordo com o conteúdo de uma célula... é possível sem vba, e com vba, claro...

E Lovera, quanto ao numero de linhas...
2003 - 65.536
2007, 2010 e 2013 1.048.576

Fabio, se ainda estiver trabalhando neste projeto, e quiser ainda quiser uma mãozinha, é só avisar.

Falow.

 
Postado : 04/05/2013 12:52 am