2014-11-06 374 views
0

因此,回想起來,這可能不是解決我的應用程序的最佳方式。但這裏是發生了什麼事情的簡要概述:Excel VBA - 在宏內循環保存的工作簿...工作簿無法打開

  1. 創建通過從每個文件的文件和提取數據的宏環路和轉儲到一個統一的工作簿
  2. 宏漸漸掛在很長的循環接近尾聲
  3. 爲了在數據掛起後保留數據(爲了理解在循環中掛起的位置/方式),我在每次迭代結束時添加了一個Workbook.Save命令。
  4. 該循環使其成爲最後一次迭代並被掛起。
  5. 我重新打開工作簿和所有的數據存在,但它在循環仍掛

我的問題:

  1. 我不能打破(Ctrl + Break)的循環,有沒有其他方法可以殺死當前的執行?
  2. 當Excel在迭代後保存文檔時,是否有可能在書重新打開時在宏內的執行點選擇備份?
  3. 最後,無論如何,從看似損壞的工作簿中提取宏?
+0

兩件事:1)將'DoEvents'添加到循環的內部。 2)您可以通過打開菜單並按住打開按鈕的同時按住Shift鍵來打開工作簿,而無需執行任何代碼。 – 2014-11-06 19:21:41

+0

您是否在循環結束時嘗試了'Stop'命令並逐步完成下一個數據提取命令?你可能想要添加一個計數器來監視迭代 – 2014-11-07 04:17:00

回答

0

我會在黑暗中漫步一下,因爲你沒有提供任何代碼來參考。

  1. 如果循環沒有結束,它通常以重新啓動Excel結束。在這種情況下,打破選項並不真正起作用。

  2. 如果您分配了工作簿中的變量,你可以保存更改關閉:

    Dim wb as Workbook 
    ... 
    wb.Close True 
    
  3. 您可以在它的另一個工作簿中的宏複製工作表。