簡體   English   中英

當我打開另一個 excel 文件時,舊工作簿(曾經被 VBA 打開)一直打開

[英]Old workbook (once opened by VBA) keeps opening when I open another excel file

我正在 Access 中構建一個數據庫,我從 Excel 工作簿問卷中導入數據。 我編寫了一個 Import-sub 來選擇、打開、檢索數據並最終關閉工作簿。

問題是這樣的:出於某種原因,當我現在在我的計算機上打開任何 excel 工作簿時(當時既沒有使用 Access 也沒有使用 Excel),一些舊版本的問卷也會繼續打開。 此問題不會通過重新啟動計算機而結束,而只會通過刪除該特定問卷工作簿而結束。 但隨后它開始發生在另一個工作簿上。

我有一個理論,這可能是因為我 - 在我的導入子中 - 打開了問卷,遇到了運行時錯誤,它在關閉工作簿之前結束了子程序,並且不知何故工作簿仍然“打開”。 或者仍然有一個鏈接處於活動狀態。

所以我有兩個問題:

1.)有誰知道我該如何解決這個問題?

2.)不關閉通過 VBA 打開的工作簿通常會有什么后果嗎?

我的相關代碼是:

Dim MyXL As Excel.Application
Dim MyWB As Excel.Workbook
...

在發生很多事情之間,多次發生錯誤,中斷程序。

...
MyWB.Close False
MyXL.Quit

感謝您對此的任何幫助!

我確實遇到了同樣的問題,發現 Excel 會存儲在文件夾 (XLSTART) 中啟動 Excel 時打開的文件。 我的路徑是: c:\\USERS\\MyUserName\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART

正如羅斯麥康尼所建議的那樣,錯誤處理可以防止這種情況發生。 但是錯誤已經發生,並且正如您所建議的,問卷已將該工作簿放在文件夾 XLSTART 中。 您必須從該文件夾中刪除它以修復不需要的事件。

你的理論很有可能。 如果您從不顯示 Excel 應用程序,就會遇到錯誤,並且您的代碼永遠不會關閉工作簿,它會在后台保持打開狀態,並且您的代碼很可能會丟失對它的引用。 下次打開 Excel 文件時,已打開(但從視圖中隱藏)的 Excel 實例“接收”請求並打開文件,同時顯示仍從宏中打開的文件。

1.)您應該設置錯誤處理,以便在出現不可恢復的錯誤時關閉工作簿和 Excel 應用程序。

Sub MySub()
    On Error GoTo handle_Err

    <... code ...>

    Exit Sub
handle_Err:
    MyWB.Close False
    MyXL.Quit
End Sub

如果您的代碼中有其他錯誤處理語句,請始終重置為On Error GoTo handle_Err而不是GoTo 0等。

2.)不關閉工作簿的唯一后果是顯而易見的 - 它使用的系統資源,如果它打開進行編輯,其他人無法編輯它。

我遇到了類似的問題,並以不同的方式解決了它。 我找到了與外部工作簿的連接,並通過轉到“數據”>“編輯鏈接”來修復它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM