Steven da Austrália escreve:
Eu criei uma macro VBA que precisa criar cerca de 50 gráficos de uma planilha. O problema é que toda vez que executo o programa, chego ao 33º gráfico, uma mensagem de erro exibe "Memória insuficiente", o programa Excel trava e tenho que encerrá-lo. Tenho 256 MB de RAM no meu PC e estou usando o Excel 97 em um sistema operacional Windows NT.
Você está criando cada gráfico como sua própria planilha de gráfico? O Excel pode lidar com 16 milhões de células em uma planilha, mas o segredo é que ele não pode lidar com muitas planilhas. O arquivo de ajuda diz que o número de planilhas é limitado pela "memória disponível".
Eu regularmente tenho o problema que você tem. É terrivelmente frustrante, porque você nunca sabe quando ele está prestes a falhar. Se o Visual Basic fornecesse um erro interceptável, você poderia interromper a macro, salvar o arquivo e iniciar em um novo arquivo. Mas eles não fazem - você apenas tem um acidente.
Já vi o travamento acontecer em 130 planilhas e já em 40. Você precisa avaliar onde ele vai travar em seu sistema e, em seguida, colocar um contador na macro. Se você acha que vai travar após 32 gráficos, pare o processo em 30 gráficos, salve-os em uma nova pasta de trabalho, feche essa pasta de trabalho e comece a criá-los novamente em uma nova pasta de trabalho.
Isso não é bonito, mas é a única solução alternativa que encontrei.
Outro pensamento - certifique-se de fechar cada módulo e formulário do usuário no Editor do Visual Basic usando o "X" no canto superior direito. Eu descobri que simplesmente fechando todos os componentes no Visual Basic antes de executar a macro, você pode liberar um pouco mais de memória e possivelmente inserir mais alguns gráficos na "memória disponível".
Acima, falei sobre fazer coisas para conservar a memória. Steven respondeu hoje com uma excelente descoberta:
Descobri que se definir Charts AutoScaleFont como False, poderia criar cerca de 120 gráficos, o que resolveu meu problema.
Por que isso é assim, eu não tenho ideia, mas isso é Excel. Excelente dica - guarde este como um método obscuro para conservar a memória.