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

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

Tengo macrocorrupciones aleatorias en las que no puedo abrir el libro.

Tendría que desactivar todas las macros sin notificaciones, luego abrir el libro y volver a compilar las macros, guardarlas y cerrarlas. Luego habilite las macros y abra el libro de trabajo, luego el libro de trabajo se abre bien. Es casi como si actualizar las macros ayudara a reabrir el libro. Revisé algunos de mis módulos y algunos tienen un tamaño superior a 64 kb. He leído algunos artículos relacionados con los límites de tamaño de los módulos que causan corrupción.

¿Alguien verifica si esto también es para Excel 365 o si hay algún motivo por el que las macros se corrompen?

Respuesta1

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, se puede compilar.

Un módulo pesado pero probablemente aún saludable sería de 1K líneas como máximo; eso parece rondar los 40 KB cuando se exporta a un archivo de texto; 64 KB no me parece del todo indecente, aunqueesdefinitivamente por encima de 1K líneas de código y, por lo tanto, probablemente podría necesitar algunos ajustes.

Si sus módulos se llaman, por ejemplo Module8, o Utilities, verifique cómocohesivosus miembros: ¿está todo relacionado con la misma funcionalidad? ¿O se siente como si se hubieran arrojado funciones aleatorias allí?

Busque código repetido, refactorícelo. Extraiga métodos, parametricéelos, observe cómo su módulo se desvanece 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 ninguna 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 por todas partes.

Pero no es imposible que algo en O365 haya cambiado recientemente (¿estás usando unPersona enterada¿compilar?), y algo se rompió y su libro de trabajo de alguna manera se corrompió... pero si su módulo tiene un tamaño ligeramente superior a 64 KBdel código fuente de texto, es muy poco probable que esté relacionado: el código compilado sería mucho más pequeño que eso... suponiendo que el proyecto se compile.

Respuesta2

El límite es 64K porprocedimiento. Para citar deProcedimiento demasiado grande

Cuando se compila, el código de un procedimiento no puede exceder los 64 KB. Este error tiene la siguiente causa y solución:

  • El código para este procedimiento supera los 64 KB cuando se compila. Divida este y cualquier otro procedimiento importante en dos o más procedimientos más pequeños.

Estoy usando un archivo VBA de 811 KB en Access 2013. Tiene muchos procedimientos pequeños y nunca ha causado ningún problema.

Entonces, para responder a la pregunta del OP: si tiene una subrutina gigante en algún lugar de su proyecto, divídala. De lo contrario, los tamaños de módulo que informa no son motivo de preocupación.

información relacionada