
Eu tenho uma planilha Excel 2010 relativamente pequena (~ 100K) que (via VBA) quando aberta, fecha todas as planilhas, exceto a página inicial, verifica o nome do usuário e verifica-o com uma tabela SQL, trazendo de volta o registro do usuário para verificar suas permissões.
Algumas células são atualizadas rangeUserName, rangeCurrentUser, rangeSystemAccess etc ...
Se eu abrir esta pasta de trabalho quando houver outras planilhas grandes (que também possuem vba), levará cerca de 30 a 60 segundos para abrir; se nenhuma outra pasta de trabalho estiver aberta, levará menos de 5 segundos.
Por que é isso?
Responder1
Por padrão, o Excel abre cada arquivo em um único processo EXCEL.EXE - você pode observar isso na guia Processos do Gerenciador de Tarefas do Windows.
Portanto, continuar abrindo arquivos pode causar contenção nesse processo - eventualmente ele ficará sem memória e ficará lento ou travará.
Para evitar isso, você pode iniciar as janelas subsequentes do Excel como um processo EXCEL.EXE separado. Você faz isso mantendo pressionada a tecla Shift enquanto escolhe Excel no menu Iniciar ou clica nele na barra de tarefas. Depois de lançados como processos separados, o Windows parece gerenciar melhor os recursos - acredito que ele troca processos inativos pela memória virtual.
Para o Excel 2013, eles tornaram o jogo um pouco mais difícil - você deve manter pressionadas as teclas Shift + Alt até que uma janela de confirmação apareça.
Costumo abrir todas as janelas do Excel dessa maneira, especialmente se estiver trabalhando com arquivos grandes, código VBA, tabelas dinâmicas, dados externos ou suplementos. Além de evitar problemas de recursos, significa que você só perderá seu trabalho em uma janela se houver uma falha ou congelamento, em vez de perder todos eles de uma vez.