2013-07-30 119 views
1

我正在處理VBA中的100多個excel文件,提取某些數據並將其複製到主工作簿中的主電子表格中。我有一個駐留在這個主電子表格中的VBA腳本。excel vba項目不關閉

我試圖讓每個源工作簿關閉後,我打開它,並得到我所需要的。它看起來是這樣的:

dim main_wb 
dim source_wb 
set main_wb = activeworkbook 

Loop thru workbook names 
    set source_wb = workbooks.open(a_workbook_name) 

    do some stuff 
    eventually copy a few rows from various sheets into the main wb 

    source_wb.close() 
    set source_wb = Nothing 
End Loop 

的問題是,這似乎是系統持續不斷地對文件中的項目資源管理器打開...並最終耗盡內存什麼​​的。所有文件都能正常工作。只有當我試圖一次性處理所有問題時纔會出現問題。工作簿「關閉()」,但項目仍然存在於開發人員窗口的項目資源管理器中。

如何告訴它關閉一個項目。我需要能夠,沒有BS,關閉項目,並繼續下一個數百和可能數千個文件 - 自動,在代碼中,沒有來自用戶的干預。

+0

一年或兩年前,我看到有關與Google桌面搜索相關的問題 - 您有嗎?也可能與某些COM加載項(Acrobat?)相關聯 –

+0

我最好看看這個:當文件被手動打開和關閉時,封閉的工作簿仍然存在於VBA Project Explorer窗口中 - 而且這太容易了最終編輯VBA的模塊看起來像你想要工作的項目,並且因爲你實際上在爲一個具有相同名稱的文件工作'Ghost Project'而失去了工作 - 一個實際上並沒有打開的文件,但仍然出現在Project Explorer中。 –

回答

1

嘗試...它適用於類似類型的程序。

'closes data workbook 
source_wb.Close False 
+0

Cr @ p!這似乎奏效了!謝謝!我從來不會想到這會有所作爲! – elbillaf

+0

不是。它有一次工作,但第二次運行失敗......也許是這樣的......我必須每次退出並重新運行。奇怪的。 – elbillaf

+0

現在不工作了。有趣的...它曾經一次,而不是再次。這麼奇怪。 – elbillaf

1

看來,VBE編輯器並不總是可以看到正在關閉的工作簿。

我在我的ThisWorkbook模塊中包含下面的代碼,它來自另一個線程中的註釋並解決了這個問題。

http://dailydoseofexcel.com/archives/2004/12/11/google-desktop/

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
On Error Resume Next 
' ------------------------------------------------------------- 
' this code ensures that the VBA project is completely removed 
' when the workbook is closed 
' http://dailydoseofexcel.com/archives/2004/12/11/google-desktop/ 
' ------------------------------------------------------------- 
If Not (Application.VBE.MainWindow.Visible) Then 
Application.VBE.MainWindow.Visible = True 
Application.VBE.MainWindow.Visible = False 
End If 
End Sub 
0

解決方案: 管理您保存(是,否,取消) 破壞你的應用程序鏈接到加載項 關閉這些加載項 關閉應用程序

1

最近我有這個問題:我有一個工作簿,可以從我用作數據庫的其他工作簿中獲取數據。其中之一,我無意中放置了一些代碼。這導致工作簿在VBE中保持可見狀態,即使它已關閉。我的解決方案是讓我的數據庫工作簿免費代碼,並解決了這個問題。