Boa tarde, faboalves
Tem muitas coisas que estão desnecessárias em seu código mas o que mais está prejudicando a performance é a repetição de algumas tarefas dentro do laço for-next milhares de vezes sem necessidade.
Por exemplo, vc abre o workbook LogNotas.xlm, atribui à varável, copia o intervalo, cola tudo, fecha o workbook, zera a variável... tudo isso milhares de vezes. essas operações com arquivos são grandes consumidoras de recursos nesse processo.
Como o intervalo é sempre o mesmo, bastaria abrir, copiar para a área de transferência e só a colagem ficaria no laço de repetição. Terminou tudo, fecha o arquivo somente ao final.
Outro grande inimigo da performance é Colar geral, incluindo formatação, fórmulas, formatos de números, etc... Como vc tem uma base com campos consistentes, colar somente valores já seria suficiente. Se desejar, poderá via código, formatar seus dados ao final de todo o código. É bem mais rápido.
Por último, também muito importante, evite colar seus dados num intervalo em que já tem um objeto tabela. Converta em intervalo primeiro, rode o código e transforme em tabela ao final, se for necessário.
Se puder lançar os dados numa planilha limpa, sem nada de formatação seria bem mais rápido.
Com essas mudanças, fiz um teste aqui, de início levava 14 min 35seg. Removendo o abrir e fechar do arquivo no loop, caiu para 4 min 10seg. Removendo o objeto tabela e formatações, o tempo final ficou em 0 min 29 seg.
Postado : 19/02/2018 2:11 pm