Dave tiene un sistema Windows XP que todavía tiene una versión antigua de Excel 97. Ese sistema tiene una macro que se usa para procesar información en una hoja de trabajo. Es capaz de procesar 500 filas de información en aproximadamente 12 segundos. En una máquina más nueva, que ejecuta Excel 2010 en Windows 7, la misma macro que opera con los mismos datos tarda aproximadamente de 3 a 4 minutos en ejecutarse. Ambas máquinas tienen la misma cantidad de memoria (4 Gb) y procesadores comparables. Dave se pregunta por qué la macro se ejecuta mucho más lentamente en la versión más reciente de Excel.

Es muy difícil hacer algo que no sea el comentario más general sin ver el código, pero eso no significa que no haya nada que decir. :>) Lo primero que querrás hacer es comprobar cómo funciona tu macro. Por ejemplo, ¿recorre todas las filas de la hoja de trabajo para realizar su procesamiento? (Aunque la macro esté procesando 500 filas de información no significa que no esté recorriendo todas las filas de la hoja de trabajo). La razón por la que esto podría ser crítico es porque las versiones anteriores de Excel solo usaban 65,000+ filas en una hoja de trabajo, las últimas versiones pueden manejar 16 veces más filas (más de 1,000,000). Si su macro tardaba 12 segundos en ejecutarse antes, 16 veces más serían 192 segundos, lo que equivale a entre 3 y 4 minutos.

También hay informes de que Excel 2010 se comunica con bastante regularidad con el controlador de impresora, de una manera que no se hacía en versiones anteriores de Excel. Puede averiguar si esto está ralentizando su macro desactivando la comunicación al inicio de su macro:

Application.PrintCommunication = False

Al final de su macro, recuerde volver a establecer la propiedad en Verdadero para que Excel pueda comunicarse nuevamente con la impresora.

También podría ser que haya algo diferente con la máquina más nueva, incluso si la diferencia es sutil. Por ejemplo, la máquina más nueva podría tener diferentes programas en segundo plano que se ejecutan en la máquina anterior, desde un programa antivirus hasta un software de reconocimiento de voz. Además, es posible que se carguen algunos complementos de Excel diferentes que no están en el sistema anterior. No pensaría que tales cosas afectarían el rendimiento macro, pero realmente podrían. Por supuesto, no lo sabrá hasta que rastree lo que se está cargando, lo desactive y luego intente ejecutar su macro nuevamente.

Además, podría ser que la máquina más nueva tenga algunos dispositivos externos que necesite sondear periódicamente, lo que podría ralentizar las cosas. Tengo un sistema en mi oficina que tiene un disco duro externo, conectado a través de un puerto USB. A veces, el propio sistema (Windows) necesita apagarse y encender la unidad externa, y las cosas esencialmente se detienen en la computadora mientras esto sucede. Los dispositivos culpables pueden ser archivos adjuntos USB, escáneres, unidades de red, etc. Puede ser muy frustrante, especialmente cuando ralentiza algo que no debería tomar mucho tiempo.

Una buena sugerencia en este caso es no depender únicamente de lo que encuentre con un solo sistema Excel 2010. Si tiene acceso a varias máquinas, quizás incluso algunas fuera de la oficina, pruebe la macro en ellas para ver qué sucede. Si corre más rápido, entonces sabrá que hay algo invisible en juego en el lento sistema 2010.

Si encuentra que todo es realmente «igual», entonces es posible que deba ingresar al Editor de VB en el sistema y comenzar a sincronizar algunas partes de su macro. Esto es tedioso, pero puede ayudarlo a delimitar dónde, exactamente, la macro se está estancando.

Si decide seguir esta última ruta, encontrará que vale la pena invertir en un buen libro de referencia para programadores de Excel VBA. Hay varios en el mercado, así que compare un poco. (No puede equivocarse con nada escrito por John Walkenbach, y he escuchado cosas buenas sobre Excel 2007 VBA Programmer’s Reference.)

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (12440) se aplica a Microsoft Excel 2010.