bilokas,
Boa Tarde!
O erro está ocorrendo no evento Change do seu txtPesquisa. Lá, você tem o seguinte código:
Dim i As Integer
For i = 0 To banco.RecordCount - 1
If Not IsNull(banco(0)) Then
.ListItems.Add 1, , banco(0)
.ListItems(1).ListSubItems.Add 1, , banco(1)
.ListItems(1).ListSubItems.Add 2, , banco(2)
.ListItems(1).ListSubItems.Add 3, , banco(3)
End If
banco.MoveNext
Next i
A declaração da variável contadora i está com Integer (inteira). Entretanto, você quer percorrer todas as suas 470 mil linhas com uma variável Integer que não admite mais do que 32 mil linhas.
Assim, modifique o tipo da sua variável i para Long ou Double que aceita uma variedade maior de números.
Fiz aqui um teste com 100 mil linhas e a minha máquina do trabalho (que não é lá grande coisa), um Core I5, com 8 Gb de RAM, passou mais de 5 minutos para passar por 60 mil registros, chegando, inclusive a travar.
Dessa forma, não aconselho que você adote essa solução pois se demorou tudo isso em apenas 60 mil linhas, imagine em 470 mil.
Que solução eu adotaria? Primeiro, quando você passar para o Formulário de pesquisa você não deve carregar nada no ListView. Somente quando o usuário fizer as devidas escolhas e clicar no botão Pesquisar é que você faz uma consulta SQL na sua base e carrega no ListView apenas a consulta que atende aos critérios solicitados na pesquisa.
Outra coisa que você pode fazer é trabalhar diretamente no próprio Access, sem a necessidade de utilização do Excel.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Postado : 06/08/2014 12:46 pm