
Tengo una hoja de cálculo de Excel 2010 relativamente pequeña (~100K) que (a través de VBA) cuando se abre, cierra todas las hojas de trabajo excepto la página de inicio, verifica el nombre de usuario y lo verifica con una tabla SQL, recuperando el registro del usuario para verificar. sus permisos.
Se actualizan algunas celdas rangeUserName, rangeCurrentUser, rangeSystemAccess, etc.
Si abro este libro cuando hay otras hojas de cálculo grandes (que también tienen vba), tarda entre 30 y 60 segundos en abrirse, cuando, si no hay otros libros abiertos, tarda menos de 5 segundos.
¿Por qué es esto?
Respuesta1
De forma predeterminada, Excel abre cada archivo dentro de un único proceso EXCEL.EXE; puede verlo en la pestaña Procesos del Administrador de tareas de Windows.
Por lo tanto, continuar abriendo archivos puede causar conflictos dentro de ese proceso; eventualmente se quedará sin memoria y se ralentizará o fallará.
Para evitar esto, puede iniciar ventanas de Excel posteriores como un proceso EXCEL.EXE independiente. Para ello, mantenga presionada la tecla Mayús mientras elige Excel en el menú Inicio o hace clic en él en la barra de tareas. Una vez que se iniciaron como procesos separados, Windows parece administrar mejor los recursos; creo que cambia los procesos inactivos a la memoria virtual.
Para Excel 2013, han hecho que el juego sea un poco más difícil: debes mantener presionado Shift + Alt hasta que aparezca una ventana de confirmación.
Tiendo a abrir todas las ventanas de Excel de esta manera, especialmente si trabajo con archivos grandes, código VBA, tablas dinámicas, datos externos o complementos. Además de evitar problemas de recursos en primer lugar, significa que solo perderá su trabajo en una ventana si falla o se congela, en lugar de perderlos todos a la vez.