¿Por qué Excel 2013 es tan lento con las macros?

Ha de existir una muy buena razón para que el software que la mayoría de la gente usa como estándar de facto, exija cada vez más y más recursos de sistema; y al mismo tiempo, sea cada vez más pesado y lento. Por ejemplo, Excel, el gestor de hojas de cálculo de Microsoft. Para muchos nostálgicos, XP  fue la última buena versión de Windows (el sistema de reparación de conexiones de red en las versiones superiores parece diseñado por burócratas), y para los usuarios que recién aprenden a combinar la ofimática con la programación, la última buena versión de Excel fue la 2003. ¿Por qué? Porque a partir de Excel 2007 las macros de Visual Basic no es que sean lentas: se arrastran.

No creo que los brillos de Office 2007 o la interfaz Ribbon justifiquen pasar de 300 MHz de procesador a 1 GHz como mínimo para mover Windows 8 y Office 2013, sólo para seguir viendo a Excel como un programa de hacer tablas. Tampoco explican por qué Excel 2013 tarda el doble que 2003 en ejecutar una macro que implique gran cantidad de datos. Es cierto que hay que tener sentido de economía del lenguaje y buen criterio de diseño al crear macros, pero aun así no hay razón para la diferencia de tiempo en ejecutar una misma macro en dos versiones diferentes de un mismo programa.

Investigando un poco, la lentitud de Excel 2013 en ejecutar macros tiene que ver con medidas de seguridad y cifrado adicionales a partir de la version 2013 (eso dicen, pero en Excel 2007 la lentitud es igual); y por esas razones de seguridad es que Microsoft no parece querer hacer algo al respecto. La mayoría de las dudas de los usuarios tienen que ver con proteger y cifrar hojas o libros, pero también al ejecutar macros que usen datos de una o varias hojas (como algunos ejercicios que he hecho previamente). Por ejemplo, un ejercicio como de primer curso de programación, podría ser el siguiente: ejecutar una macro que llene 100 filas de números aleatorios de tal modo que en cada fila haya 10 números entre 1 y 100, que estén ordenados de menor a mayor, y que resalte en color las celdas que contengan números primos. ¿Qué explicación hay para que Excel 2013 sobre Windows 8, en un core i7 de ocho núcleos, tarde lo mismo o más que en un Pentium Dual-Core con Windows XP y Excel 2003?

Algunas soluciones -debidas a los usuarios, porque a MS parece no importarle un comino-, tienen que ver con la forma en que Excel devuelve en pantalla el proceso de los datos. Por ejemplo, Excel 2013 mejora un poco la velocidad de una macro si su código se escribe entre las líneas:

Application.Calculation = xlCalculationManual

y

Application.Calculation = -4105

y aun así se siente el uso del procesador que hace el PC. Otras líneas de código entre las cuales se puede escribir la macro son:

Application.ScreenUpdating = False

y

Application.ScreenUpdating = True

Como dije antes, Excel no es un programa destinado sólo para hacer tablas o llevar contabilidad básica. Las macros son la mejor forma que muchos usuarios avanzados pueden manipular grandes cantidades de datos. Por ejemplo, como aficionado al ajedrez, me pregunto cómo espera la federación internacional (FIDE) que un usuario revise una base de datos de 486.619 jugadores (a la fecha, y creciendo) desde un archivo de texto, en un programa que no sea Excel. La versión 2003 no sirve porque se quedó en 65.536 filas. Otras suites ofimáticas, como LibreOffice, pueden abrirla, pero al hacer operaciones básicas sin macros como ordenarla, colapsan el sistema, gracias a sus lagunas de memoria (y con todo respeto, LibreOffice Basic es una engorrosa mala imitación de juguete de VB6).

¿La solución? Para mí no hubo otra que instalar Office 2003 en Windows 8.1 (para algo sirve el asistente de compatibilidad). Excel 2003 funciona rapidísimo ejecutando macros, y el compilador de Visual Basic es casi igual a la última versión (7.1) -otra razón que no justifica mucho el cambio. Para hacer tablas bonitas o revisar bases de chorrocientos mil registros, siempre estará ahí la versión moderna.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s