¿El límite de tamaño de 64 kb para los módulos está corrompiendo macros para Excel 365?

1

Estoy teniendo corrupciones de macros al azar donde no puedo abrir el libro de trabajo.

Tendría que deshabilitar todas las macros sin notificaciones, luego abrir el libro de trabajo y volver a compilar las macros, guardar cerca. Luego habilite las macros y abra el libro de trabajo, luego el libro de trabajo se abre bien. Es casi como actualizar las macros ayuda a reabrir el libro de trabajo. Revisé algunos de mis módulos y algunos superan el tamaño de 64 kb. He leído algunos artículos relacionados con los límites de tamaño del módulo que causan corrupción.

¿Alguien verifica si esto también es para Excel 365 o alguna razón para que las macros se corrompan?

ThisGuyJustNeedsHelp
fuente
44
Escribir módulos más pequeños? Lea sobre cohesión y principios como la responsabilidad única : su código será más fácil de mantener y no tendrá que lidiar con los límites de tamaño del módulo.
Mathieu Guindon
bueno, el punto es que me pregunto si podría ser un factor para que mis macros se corrompan. Además, Excel se cierra al azar al copiar, pegar texto en otras hojas dentro del libro causando la misma macro corrupción.
ThisGuyJustNeedsHelp
He leído algunos artículos relacionados con los límites de tamaño del módulo que causan corrupción : el formato de almacenamiento interno no ha cambiado en 20 años, ¿qué te hace pensar que O365 cambia algo de eso? Los límites no son el problema aquí ...
Mathieu Guindon
FWIW el límite de 64 KB no está en el tamaño de archivo exportado / código fuente de texto, está en el código p compilado en el almacenamiento interno.
Mathieu Guindon

Respuestas:

1

El límite de 64 KB no está en el tamaño del archivo exportado, es el tamaño máximo de un módulo compilado.

Si su módulo tiene menos de 10K líneas, puede compilarse.

Un módulo pesado pero probablemente saludable sería de 1K líneas, como máximo, que parece rondar los 40KB cuando se exporta a un archivo de texto; 64KB no me parece completamente indecente, aunque definitivamente está por encima de las líneas de código de 1K, y por lo tanto, podría usar algunos ajustes.

Si sus módulos se nombran, por ejemplo , Module8o Utilities, verifique cuán cohesionados son sus miembros: ¿está todo relacionado con la misma funcionalidad? ¿O parece que las funciones aleatorias se volcaron allí?

Busque código repetido, refactorícelo. Extraiga métodos, parametrícelos, observe cómo su módulo se derrite y conserva toda su funcionalidad.

La mecánica de almacenamiento interno para el código VBA no ha cambiado en 20 años: no veo una razón para que eso haya cambiado recientemente, especialmente porque VBA está prácticamente congelado ahora, y cambiar cualquier cosa en la mecánica de almacenamiento rompería millones de cosas en todas partes.

Pero, no es imposible que algo haya cambiado recientemente en O365 (¿está utilizando una compilación de Insider ?), Y algo se rompió y su libro de trabajo de alguna manera se corrompió ... pero si su módulo está ligeramente por encima de 64 KB de código fuente de texto , es muy es poco probable que esté relacionado: el código compilado sería mucho más pequeño que eso ... suponiendo que el proyecto se compile.

Mathieu Guindon
fuente
Todos mis módulos cuando se exportan, están por debajo de 64 KB y algunos en el tamaño de 100 KB. El libro de trabajo solo se corrompe al azar. A veces, copiar y pegar de una hoja a otra dentro del libro hace que Excel se bloquee. Luego, al volver a abrir el mismo libro de trabajo, todo el libro de trabajo está dañado y tengo que hacer el proceso indicado en mi publicación para volver a compilar las macros para que pueda volver a abrirse y todo funcione bien.
ThisGuyJustNeedsHelp
El tamaño del archivo es irrelevante, solo importa el número de líneas (el tamaño de almacenamiento no se muestra en ninguna parte).
Mathieu Guindon