模組的 64kb 大小限制是否會破壞 Excel 365 的巨集?

模組的 64kb 大小限制是否會破壞 Excel 365 的巨集?

我遇到隨機巨集損壞,無法開啟工作簿。

我必須在沒有通知的情況下停用所有宏,然後打開工作簿並重新編譯宏,儲存關閉。然後啟用巨集並開啟工作簿,然後工作簿可以正常開啟。這幾乎就像刷新巨集有助於重新開啟工作簿一樣。我檢查了一些模組,其中一些模組大小超過 64kb。我讀過一些有關導致損壞的模組大小限制的文章。

有人驗證這是否也適用於 excel 365 或巨集損壞的任何原因嗎?

答案1

64KB 限制不是針對匯出檔案大小,而是針對編譯模組的最大大小。

如果你的模組少於10K行,是可以編譯的。

一個重但可能仍然健康的模組將有 1K 行,頂部 - 當導出到文字檔案時似乎徘徊在 40KB 左右; 64KB 並不讓我覺得完全不雅,儘管它肯定超過 1K 行程式碼,因此可能需要進行一些調整。

如果您的模組被命名為例如Module8Utilities,請驗證如何凝聚力他們的成員是 - 是否都與相同的功能相關?或者感覺像是隨機函數被傾倒在那裡?

尋找重複的程式碼,重構它。提取方法,參數化它們,看著你的模組消失,同時保留其所有功能。

VBA 程式碼的內部儲存機制已經 20 年沒有改變了——我不認為最近有什麼改變,特別是因為 VBA 現在幾乎已經凍結了,改變儲存機制中的任何內容都會破壞數百萬美元。 。

但是,最近 O365 中的某些內容發生變更並非不可能(您是否使用內幕構建?文字原始碼,它不太可能相關:編譯後的程式碼會比那個小得多......假設專案編譯了。

答案2

每個限制為 64K程式。引用自程式太大

編譯時,過程的程式碼不能超過 64K。此錯誤有以下原因及解決方法:

  • 該過程的程式碼在編譯時超過 64K。將此程式以及任何其他大型程式分解為兩個或更多較小的程式。

我在Access 2013中使用811KB的VBA檔案。

因此,回答OP的問題:如果您的專案中某個地方有一個巨大的子例程,請將其分解。否則,您報告的模組大小無需擔心。

相關內容