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?
microsoft-excel
vba
ThisGuyJustNeedsHelp
fuente
fuente
Respuestas:
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 ,
Module8
oUtilities
, 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.
fuente