Excel 365용 매크로를 손상시키는 모듈의 64kb 크기 제한이 있습니까?

Excel 365용 매크로를 손상시키는 모듈의 64kb 크기 제한이 있습니까?

통합 문서를 열 수 없는 임의의 매크로 손상이 발생했습니다.

알림 없이 모든 매크로를 비활성화한 다음 통합 문서를 열고 매크로를 다시 컴파일하고 닫아 저장해야 합니다. 그런 다음 매크로를 활성화하고 통합 문서를 열면 통합 문서가 제대로 열립니다. 매크로를 새로 고치는 것과 거의 비슷하여 통합 문서를 다시 여는 데 도움이 됩니다. 내 모듈 중 일부를 검사했는데 일부는 64kb 크기를 초과했습니다. 손상을 일으키는 모듈 크기 제한과 관련된 일부 기사를 읽었습니다.

이것이 Excel 365에도 적용되는지 또는 매크로가 손상되는 이유가 있는지 확인하는 사람이 있습니까?

답변1

64KB 제한은 내보낸 파일 크기가 아니라 컴파일된 모듈의 최대 크기입니다.

모듈이 10K 라인 미만인 경우 컴파일할 수 있습니다.

무겁지만 여전히 건전할 가능성이 있는 모듈은 1,000줄, 상단이 될 것입니다. 텍스트 파일로 내보낼 때 약 40KB를 맴도는 것 같습니다. 64KB가 완전히 음란하다고 생각되지는 않습니다.~이다확실히 1K 줄 이상의 코드이므로 약간의 조정이 필요할 수 있습니다.

모듈 이름이 예를 들어 Module8또는 인 경우 Utilities방법을 확인하십시오.결합력 있는그들의 구성원은 모두 동일한 기능과 관련되어 있습니까? 아니면 거기에 임의의 기능이 버려진 것 같은 느낌이 듭니까?

반복되는 코드를 찾아 리팩토링하세요. 메소드를 추출하고, 매개변수화하고, 모든 기능을 유지하면서 모듈이 녹아 없어지는 것을 지켜보세요.

VBA 코드의 내부 저장 메커니즘은 20년 동안 변경되지 않았습니다. 특히 VBA가 현재 거의 동결되어 있고 저장 메커니즘을 변경하면 수백만 달러가 중단될 것이기 때문에 최근에 변경된 이유가 없습니다. 여기저기에 있는 것들.

하지만 최근에 O365의 내용이 변경된 것이 불가능하지는 않습니다.소식통빌드?), 문제가 발생하여 통합 문서가 어떻게든 손상되었습니다.... 하지만 모듈이 64KB를 약간 넘는 경우텍스트 소스 코드, 관련이 있을 가능성은 거의 없습니다. 프로젝트가 컴파일된다고 가정하면 컴파일된 코드는 그보다 훨씬 작을 것입니다.

답변2

한도는 64K입니다.절차. 인용하자면절차가 너무 큼

컴파일 시 프로시저의 코드는 64K를 초과할 수 없습니다. 이 오류의 원인과 해결 방법은 다음과 같습니다.

  • 이 프로시저의 코드는 컴파일 시 64K를 초과합니다. 이 절차와 다른 대규모 절차를 두 개 이상의 작은 절차로 나눕니다.

Access 2013에서 811KB VBA 파일을 사용하고 있습니다. 작은 절차가 많고 문제가 발생한 적이 없습니다.

따라서 OP의 질문에 대답하려면 프로젝트 어딘가에 거대한 서브루틴이 있으면 이를 분리하세요. 그렇지 않으면 보고하는 모듈 크기는 걱정할 필요가 없습니다.

관련 정보