Sin memoria en VBA

Iqra Hasnain 15 febrero 2024
Sin memoria en VBA

En este artículo, discutiremos el error Memoria insuficiente en VBA con la ayuda de algunos ejemplos.

Error Memoria insuficiente en VBA

VBA da un error de Memoria insuficiente cuando Excel ha utilizado todos los recursos de nuestro dispositivo mientras ejecutaba la macro. Se quedará sin memoria para calcular y ejecutar el código.

Ocurrirá cuando muchos de los programas se estén ejecutando en el dispositivo y estemos intentando ejecutar la macro extensa en Excel, o tal vez podamos crear un bucle perpetuo cuando el error haya ocurrido en Excel.

Cuando alguien está trabajando con un libro de trabajo que contiene tantas hojas de trabajo y tantas filas, se produce un error de “Memoria insuficiente” en VBA. Ocurrirá un error de memoria insuficiente si creamos un bucle que funcionará con una cantidad significativa de datos.

Si trabajaremos con muchos objetos y configuraremos todo con la sentencia SET, pero si no borraremos las referencias a los objetos entre bucles o procedimientos. Vamos a discutir con la ayuda de un ejemplo.

El código se muestra a continuación en el bucle, lo que podría causar un error de Memoria insuficiente si abrimos varios archivos con varias hojas.

Sub TestMemory()
  Dim wb As Workbook
  Dim ws As Worksheet
  Dim i As Single
  For Each wb In Application.Workbooks
    For Each ws In wb.Sheets
      Do Until ActiveCell = "A1048576"
        ActiveCell = 1 + i
        i = i + 1
        ActiveCell.Offset(1, 0).Select
    Loop
  Next ws
Next wb
End Sub

Liberar objetos en VBA

Al trabajar con bucles y objetos, debemos asegurarnos de establecer el objeto en NADA una vez que lo usamos. Liberaremos la memoria si ya no será necesaria.

set str = ""
set num = []

Nos aseguraremos de que solo se esté ejecutando una instancia de Excel. Si trabajamos con archivos enormes y una gran cantidad de datos, debemos comprobar que no tengan muchas sesiones abiertas en Excel.

Si es necesario, ábralo una vez. Para verificar esto, debemos ir al Administrador de tareas y verificar cuántas instancias de Excel se están ejecutando en ese momento.

Presione Ctrl+Alt+Eliminar en el teclado y luego haga clic en el Administrador de tareas para asegurarse de que solo se esté ejecutando una instancia de Excel.

Liberar objetos en VBA (1)

También podemos verificar en el Administrador de tareas que no hay ningún ejemplo de Excel ejecutándose detrás de escena. Mire hacia abajo en el Administrador de tareas hasta que vea Procesos en segundo plano y asegúrese de que Excel no esté en ese estado de ánimo para los proyectos.

Liberar objetos en VBA (2)

Compruebe el tamaño de su registro de Excel. Las líneas y segmentos frecuentes se encuentran debajo de los utilizados en sus hojas de trabajo.

El éxito implica la memoria en estas celdas, independientemente de si esas celdas están vacías. Verifique el tamaño del documento presionando CTRL+SHIFT+END en la consola para ver dónde aterriza el puntero de su celda.

Suponiendo que caiga bien debajo de la última celda que está utilizando, asegúrese de borrar todas las líneas y secciones vacías sobre el puntero de la celda y luego vuelva a guardar la lista. Disminuirá el tamaño de su documento de Excel.

Formas alternativas de comprobar la memoria en VBA

Existen diferentes formas alternativas de liberar la memoria en Excel. La idea brillante es cerrar Excel si no lo está usando y luego abrirlo más tarde.

Liberará cualquier memoria que esté almacenada en Excel, y tiende a retener memoria incluso si el libro de trabajo no está abierto.

Asegúrese continuamente de que su versión de Office sea moderna al verificar si hay actualizaciones en su dispositivo y verificar si hay complementos de VBA que usará y que aún no está utilizando. Puede desinstalarlos para liberar significativamente más memoria.