Limitar o uso da CPU do Excel

30

Existe uma maneira de limitar a quantidade de uso de CPU que o Excel tem acesso ao executar? Eu tenho um script VBA que calcula um monte de fórmulas de matriz gigante. Todo o cálculo leva talvez 20 minutos usando 100% da minha CPU, mas não posso usar minha máquina durante o tempo e preferiria que ela fosse executada em segundo plano com 50% de uso da CPU, para que eu possa continuar a fazer outras coisas. Alguma sugestão?

Meu sistema operacional é o Windows 7 Enterprise de 64 bits e a versão do Excel é de 2007 a 32 bits

    
por learningAsIGo 12.01.2016 / 21:26

9 respostas

54

Se uma função VBA for chamada a partir de várias fórmulas ou se o seu script gerar ou forçar o recálculo de várias fórmulas, então isso deve definitivamente fazer uso do recurso cálculo múltiplo de threads do Excel. Respectivamente, isso executaria várias instâncias de sua função VBA para cada fórmula ou recalcularia várias células simultaneamente enquanto seu script vba estava sendo executado em um único thread.

Você pode limitar o número de encadeamentos usados pelo Excel para recalcular fórmulas nas Opções do Excel ... Guia Avançado ... seção Fórmulas.

    
por 13.01.2016 / 01:20
27

Em vez de diminuir a prioridade, tente alterar a afinidade no Gerenciador de tarefas. Se você tiver mais de 1 CPU, poderá limitar o número de CPUs que o Excel usará. Isso liberará as outras CPUs para trabalhar em outras coisas.

Clique com o botão direito do mouse na guia Processos e selecione Definir afinidade. Escolha CPU (s) onde você deseja que o Excel seja executado.

    
por 12.01.2016 / 22:31
7

Você pode tentar diminuir a prioridade do processo do Excel, encontrando a abertura do gerenciador de tarefas, alternando para a guia "Detalhes" ou "Processos" (dependendo da versão do Windows), clicando com o botão direito no processo excel.exe. e selecionando uma prioridade mais baixa. Isso deve dar mais tempo de CPU para outros processos.

    
por 12.01.2016 / 21:32
3

Existem funções Sleep e Wait disponíveis no VBA ou através de uma declaração. No entanto, a "regra excessivamente simplista" é nunca usar Sleep (). (google '"nunca usa sleep ()" programação')

Página do documento para Application.Wait ( link ). Observe que Suspender e Aguardar fará com que o Excel pare de responder durante o período que você especificar e isso pode causar "acidentes de trem" na fatia de tempo.

Se o seu cálculo envolve um loop de algum tipo, uma maneira de lidar com isso para seu propósito específico (perder tempo de cálculo para disponibilidade da CPU) é fazer uma função especial de espera que, por exemplo, faz loops DoEvents () para 1 segundo e depois retorna.

DoEvents basicamente diz ao seu código / intérprete para dar tempo para o sistema operacional, etc. Isso definitivamente fará com que seu código demore mais. Ele também pode permitir que você edite a planilha enquanto o cálculo está em andamento, para que sua milhagem possa variar. Teste.

Veja, por exemplo, link

    
por 12.01.2016 / 21:57
2

Uma pergunta semelhante foi feita há alguns anos e tem uma solução: as soluções que podem limitar a CPU uso de um processo?

Process Tamer funciona para o Windows 7. link

    
por 12.01.2016 / 21:40
0

Eu tive o mesmo problema quando meu laptop tinha 4GB de memória. Assim que eu fiz o upgrade para 16GB, o problema parou. Es es es B B B B B es B es vB B es es es es es es es es es eses     

por 22.01.2016 / 22:49
0

Adicione as duas linhas seguintes em algum lugar perto do início da sua macro:

'Turn off screen updating

 Application.ScreenUpdating = False

E estas duas linhas perto do fim:

'Turn screen updating back on

 Application.ScreenUpdating = True

Ele terá menos trabalho para fazer enquanto você faz outra coisa.

    
por 23.01.2016 / 05:19
-2

Se você estiver usando um escritório de 32bi em um sistema operacional de 64 bits, use este aplicativo: link

Este aplicativo permitirá que o excel ou qualquer outro escritório de 32 bits use mo

    
por 13.01.2016 / 15:55
-5

Use o OpenOffice ou o LibreOffice: seu poder de script é muito mais eficiente que o do MS, e você pode literalmente ter um "acelerador" em seus cálculos.

EDIT: Por que downvote? dê uma olhada no manual e veja você mesmo. Você pode converter seus cálculos para Java e ser muito bem com todo o poder de estrangulamento da JVM, por exemplo.

    
por 13.01.2016 / 01:09