Macros no Excel 2010 trava

2

Eu tenho uma planilha com várias macros. Geralmente, ao usar o Excel 2007 anteriormente, um usuário clica em um botão e tudo funciona conforme o esperado (cálculos, envio de e-mail e E / S de arquivo). Normalmente, o tempo de execução esperado é de cerca de 90 segundos. A planilha é um arquivo xlsm criado com o Excel 2007.

No entanto, no Excel 2010, o mesmo processo do usuário resulta em um excel não responsivo e nos força a eliminar o Excel do gerenciador de tarefas.

Alguns detalhes que eu tenho recolhido até agora ao tentar depurar este problema:

  1. Ao monitorar o uso da CPU, parece que o Excel inicia a macro. O uso da CPU aumenta conforme o esperado para cerca de 47% por alguns segundos. Excel.exe do que cai para 0% de uso e agora tenho um Excel não responsivo (mesmo após 1 hora).
  2. Se eu definir pontos de interrupção de depuração em módulos e funções diferentes e percorrer o código (depois de clicar no botão), o processo funcionará como esperado, embora muito mais lento. Para adicionar, não houve exceções.

Eu estou em uma perda completa sobre o que o problema pode ser. Inicialmente pensei que poderia ser o acréscimo que está sendo usado, mas que foi desmentido pelo ponto 2.

Esta parece ser uma situação muito estranha. Eu posso fornecer mais informações, se necessário, mas estou no fim da causa pode ser. Preciso de ajuda para diagnosticar e resolver esse problema.

    
por Ahmad 16.03.2011 / 11:25

3 respostas

0

Esta pode não ser a sua resposta, mas é uma situação que vi que produz os resultados que você descreveu.

Procure na (s) macro (s) a seguinte declaração:

Application.ScreenUpdating = False

Isso informa a interface GUI do Excel para não mostrar nenhuma alteração / atualização / qualquer coisa que esteja acontecendo. Isso pode ser desejável enquanto uma macro é executada. No entanto, você precisa garantir que a macro, em algum momento, define isso de volta para true assim:

Application.ScreenUpdating = True

Se isso nunca for definido como True, isso produzirá uma situação como você descreveu.

Primeiro pesquise o código da propriedade "ScreenUpdating" que está sendo definida, remova-o e veja se isso resolve o problema.

Se você não encontrar "ScreenUpdating" em nenhum lugar do código, terá outro problema.

Editar: parece que alguém já mencionou a atualização da tela nos comentários acima.

    
por 31.07.2012 / 16:00
0

Obrigado por esta ajuda.

Eu estava executando uma macro em desenvolvimento e ao vivo. Eu não tive nenhum problema em DEV, mas pendurado ao vivo. Ele é executado em um servidor, e não em um PC local. Lembro-me de que, quando tentamos pela primeira vez ao vivo, tínhamos que matar a tarefa e ela ficava presa nas tentativas subsequentes. Assim que eu adicionei as linhas application.screenupdating = TRUE doevents () doevents ()

imediatamente antes application.screenupdating = FALSE

a macro funcionou como pretendido.

    
por 01.07.2016 / 13:42
0

Além das respostas mencionadas anteriormente, se sua planilha do Excel contiver uma grande quantidade de dados, tente salvá-la como uma planilha binária do Excel (* .xlsb)

O formato binário é muito mais rápido que o formato xml padrão do Excel. Espero que suas macros também consigam rodar mais rápido.

    
por 15.11.2016 / 12:31