none
Cómo cerrar ventanas del editor de VBA RRS feed

  • Pregunta

  • Utilizo el VBA para crear aplicaciones personales en Excel.

    Últimamente, Excel  a veces ( pienso que esto puede ser un detalle importante) me lanza un error "OUT OF MEMORY" , y puede ocurrir durante el trabajo de programación o después de cerrar y  al reabrir el archivo .

    Intentando encontrar la razón de este error, y habiendo revisado cada proceso sin encontrarla, me inclino a sospechar en el número de ventanas del IDE de VBA que se abren cuando estás realizando la programación.

    Por ello es mi consulta, a ver si se podrían cerrar estas ventanas a través de alguna función, cuando estas ocupen un cierto nivel de la memoria o de alguna otra forma, para evitar el colapso del archivo

    Agradecería un comentario que me guíe en este problema.

    Gracias

    Robema

    miércoles, 26 de agosto de 2020 15:51

Todas las respuestas

  • Hola robema,

    Desafortunadamente, no hay mucho que puedas hacer, es solo Excel usando más recursos de los que tiene disponibles. Sin embargo, hay algunas buenas prácticas que puedes implementar en tu código para reducir los recursos que se utilizan. Para corregir este error puedes:

    • Cerrar las aplicaciones, los documentos y los archivos de código fuente innecesarios.
    • Eliminar los controles y formularios innecesarios, por lo que hay menos cargados al mismo tiempo.
    • Reducir el número de variables tipo Public.
    • Comprobar el espacio disponible en disco.
    • Aumentar la memoria RAM disponible mediante la instalación de memoria adicional o la reasignación de memoria.
    • Asegurarte de que la memoria se libera cuando ya no se necesita.


    La mejor manera de ayudar a liberar la memoria es anular los objetos grandes:

    Sub Whatever()
        Dim someLargeObject as SomeObject
    
        'expensive computation
    
        Set someLargeObject = Nothing
    End Sub

    También ten en cuenta que las variables globales permanecen asignadas de una llamada a otra, por lo que, si no necesitas persistencia, no debes usar variables globales o debes anularlas cuando ya no las necesites. Sin embargo, esto no ayudará si:

    • Necesitas el objeto después del procedimiento.
    • Tu objeto no cabe en la memoria.

    Otra posibilidad es cambiar a una versión de 64 bits de Excel, que debería poder usar más RAM antes de fallar (las versiones de 32 bits suelen tener un límite de alrededor de 1,3 GB). Quedo pendiente de cualquier actualización. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    miércoles, 26 de agosto de 2020 16:35
    Moderador
  • Hola robema,

    ¿Alguna novedad sobre tu pregunta? ¿Han sido útiles las respuestas proporcionadas? Por favor no olvides marcar una respuesta si resolviste tu consulta.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    jueves, 3 de septiembre de 2020 1:01
    Moderador