Steven de Australia escribe:
He creado una macro de VBA que tiene que crear alrededor de 50 gráficos a partir de una hoja de trabajo. El problema es que cada vez que ejecuto el programa cuando llego al gráfico 33, aparece un mensaje de error que dice "No hay suficiente memoria", luego el programa de Excel se bloquea y tengo que terminar el programa. Tengo 256 MB de RAM en mi PC y estoy usando Excel 97 en un sistema operativo Windows NT.
¿Está creando cada gráfico como su propia hoja de gráfico? Excel puede manejar 16 millones de celdas en una hoja de trabajo, pero el secreto es que no puede manejar muchas hojas de trabajo. El archivo de ayuda dice que el número de hojas de trabajo está limitado por la "memoria disponible".
Regularmente experimento el problema que tienes. Es terriblemente frustrante, porque nunca se sabe cuándo está a punto de estrellarse. Si Visual Basic le da un error capturable, puede detener la macro, guardar el archivo, comenzar en un nuevo archivo. Pero no lo hacen, solo tienes un accidente.
He visto que el bloqueo ocurre tan tarde como 130 hojas de trabajo y tan pronto como 40. Tienes que medir dónde se bloqueará en tu sistema y luego poner un contador en la macro. Si cree que va a fallar después de 32 gráficos, detenga el proceso en 30 gráficos, guárdelos en un nuevo libro de trabajo, cierre ese libro y comience a crearlos nuevamente en un nuevo libro de trabajo.
Esto no es bonito, pero es la única solución que he encontrado.
Otro pensamiento: asegúrese de cerrar cada módulo y formulario de usuario en el Editor de Visual Basic usando la "X" en la esquina superior derecha. He descubierto que simplemente cerrando todos los componentes en Visual Basic antes de ejecutar la macro, puede liberar un poco más de memoria y posiblemente exprimir algunos gráficos más en la "memoria disponible".
Arriba, hablé de hacer cosas para conservar la memoria. Steven respondió hoy con un excelente descubrimiento:
Descubrí que si configuro Charts AutoScaleFont en False, podría crear alrededor de 120 gráficos, lo que ha resuelto mi problema.
No tengo ni idea de por qué es así, pero eso es Excel. Excelente consejo: guarde este como un método oscuro para conservar la memoria.