為什麼使用 VBA 的 Excel 2010 電子表格在與其他已開啟的大型 Excel 電子表格一起開啟時會出現滯後

為什麼使用 VBA 的 Excel 2010 電子表格在與其他已開啟的大型 Excel 電子表格一起開啟時會出現滯後

我有一個相對較小(~100K)的Excel 2010 電子表格,(透過VBA)開啟時,會關閉除起始頁之外的所有工作表,檢查使用者名稱並與SQL 表進行交叉檢查,帶回用戶的記錄進行檢查他們的權限。

更新了一些儲存格 rangeUserName、rangeCurrentUser、rangeSystemAccess 等...

如果我在有其他大型電子表格(也有 vba)的情況下打開此工作簿,則需要大約 30 到 60 秒的時間才能打開,而如果沒有其他工作簿打開,則需要不到 5 秒的時間。

為什麼是這樣?

答案1

預設情況下,Excel 在單一 EXCEL.EXE 進程中開啟每個檔案 - 您可以在 Windows 工作管理員的「進程」標籤中查看此情況。

因此,繼續開啟檔案可能會導致該進程內發生爭用 - 最終它將耗盡記憶體並減慢或崩潰。

為了避免這種情況,您可以將後續的 Excel 視窗作為單獨的 EXCEL.EXE 進程啟動。您可以透過在從「開始」功能表中選擇 Excel 的同時按住 Shift 鍵或在工作列中按一下它來執行此操作。一旦它們作為單獨的進程啟動,Windows 似乎可以更好地管理資源 - 我相信它將不活動的進程交換到虛擬記憶體中。

對於 Excel 2013,他們使該遊戲變得更加困難 - 您必須按住 Shift + Alt 直到出現確認視窗。

我傾向於以這種方式開啟每個 Excel 窗口,特別是在處理大檔案、VBA 程式碼、資料透視表、外部資料或加載項時。除了從一開始就避免資源問題之外,這意味著如果發生崩潰或凍結,您只會丟失一個視窗中的工作,而不是立即丟失所有工作。

相關內容