2016-11-17 487 views
1

關閉使用Workbook.Close的「附加」工作簿(.xla),當我得到這個錯誤()方法:此工作簿當前由另一個工作簿引用,不能關閉

error 1004: 
"This workbook is currently referenced by another workbook and cannot be closed." 

我關閉了VBA編輯器中可見的所有其他工作簿。現在「加載項」工作簿是唯一打開的工作簿,但我仍然收到了ThisWorkbook.Close()的錯誤。使用「停止按鈕」在VBA編輯器中重置項目並沒有幫助。

爲什麼Excel認爲此工作簿當前被另一個工作簿引用? (編輯:沒有其他的工作簿,我關閉了他們所有這一點,只有一個工作簿打開,並且只有一個VBA項目出現在VBA編輯器中)

似乎某處引用已被泄漏。有沒有辦法避免這個bug?

+0

有你引用的代碼中的任何其他工作簿(S)? 「ThisWorkbook」不是您認爲的工作簿嗎? – Hambone

+0

對於Hambone而言,您能否提供您在此上下文中使用的代碼以及它出錯的行。 – nbayly

+0

@Hambone不,因爲即使所有其他工作簿已關閉,也會發生錯誤。此時只打開一個工作簿,並且只有一個VBA項目出現在VBA編輯器中。這個單獨的工作簿不能關閉,因爲「它被另一個工作簿引用」。這很奇怪。 – ThreeStarProgrammer57

回答

1

我能夠複製錯誤,但只有當文件AddIn \ Workbook自我引用(見圖下文)。

AddIn - Self Referenced VbProject

建議終止Excel中,然後重命名Addin文件並打開它。現在它的AddIn應該被關閉而沒有問題(見下面的圖)

Renamed AddIn - Self Referenced VbProject

+0

非常有趣!我不知道你可以自我參考工作簿。這是ref count無法處理的循環依賴的情況。但是,就我而言,插件沒有任何參考。看來我的工作簿COM對象的refCount> 1,因爲某種程度上不會正確地減少refCount。 – ThreeStarProgrammer57

相關問題