2012-04-26 13 views
5

Estaba depurando un problema mencionado en algunas otras * preguntas en SO y noté un comportamiento extraño durante el proceso de depuración.Técnicas de depuración de Excel VBA "Out of Memory"

El comportamiento: Error experimentado 'sin memoria' al pegar fórmulas complejas. Solo aproximadamente la mitad de las 20,000 filas que estoy iterando obtienen fórmulas pegadas antes del error. Comentó virtualmente todo el código, el error desaparece. Descomenta código de forma incremental con la esperanza de descubrir la sección específica de código que lo está causando. ¡Termina descomentando todo el código y deja de experimentar el error!

Esto significa que el mismo código funcionó bien en la misma instancia de Excel, y solucionarlo solo requirió ejecutar varias versiones más ligeras del código antes de volver a la versión original. ¿Qué podría causar esto?

+2

Sugiero que pruebe el [código limpiador] de Ron Bovey (http://www.appspro.com/Utilities/CodeCleaner.htm) - revisa el código exportándolo, eliminándolo y luego reinsertando los módulos exportados – brettdj

+0

+ 1 Estoy de acuerdo con brettdj. Code Cleaner es realmente bueno. También tengo curiosidad acerca de cualquiera de esos ejemplos que le dan el error ... –

+0

Gracias @brettdj pero Code Cleaner no ayudó. Se las arregló para llevar el archivo .xla a 151k de 159k, lo cual es fascinante para mí. – Trindaz

Respuesta

3

Suponiendo que la información en la que se estaba ejecutando fuera exactamente idéntica cada vez, parece que su problema estaba relacionado con el entorno: el problema podría ser que el sistema operativo se quedó sin memoria. En Excel 2007, la memoria utilizable para fórmulas y cachés dinámicos se aumentó a 2 gigabytes (GB), por lo que probablemente no sea el problema. Sin embargo, también está limitado por la cantidad de memoria que tu sistema operativo tenía disponible en ese momento.

El problema puede haberse producido porque la primera vez que lo probó, la memoria del sistema operativo disponible era menor (de otros procesos en ejecución ... incluso podría haberse superado el límite por programas de fondo como software antivirus ejecutando un escaneo) que cuando ejecutó la macro completa más tarde. Intentaría ejecutar su macro con el Administrador de tareas abierto para ver si está llegando a un punto casi bajo en la memoria física. Además, (suponiendo que esté en Excel 2007 o posterior) observe cuánta memoria está usando Excel y vea si está llegando a algún punto cercano al límite de 2 GB. Dudo que este sea el problema, pero al menos vale la pena verificarlo dos veces. Además, como dijo Zairja, asegúrese de configurar el cálculo al principio.

Usted dijo que estaba utilizando fórmulas complejas ... echa un vistazo a este artículo sobre Improving Performance in Excel

Hay una gran cantidad de información útil en el artículo que probablemente le ayudará a optimizar su macro.

¿Es útil para usted?