Why do files remain in project window after being closed?

你离开我真会死。 提交于 2019-12-04 07:22:07

问题


Scenario

I have a userform, and when a button is pressed, it opens an Excel file as read-only, gets some values, and closes that file. Following are the codes I am using to open and close the file.

To open: Set planbook = Workbooks.Open(planFilePath, ReadOnly:=True)

To close: planbook.Close False

Problem

After closing the file, I see that file in the project window, for each time I press the button.

It is using a lot of memory. Due to this, Excel hangs intermittently.

Why are files opened earlier but currently closed still appearing in the project window?

Note, when the button is pressed three times (means open and close a workbook three times), and thus there are three files listed in the picture.

Edit 1
It's not the module that remains, the whole file is visible in the VBA window, although the workbook is closed.

Edit 2
Noticed, if I keep the macro open for some time, the files showing in the project window, disappear one by one.

Edit 3
I found, the issue is due to opening and closing a shared workbook. See the answer for more explanation.


回答1:


After many checks, it is found out that issue is not due to any codes. It is purely because of I am opening and closing a shared workbook. This type of issues are common when use shared workbooks. So it is best to avoid usage of shared workbooks.

During these process some items I did to clear memory issue are

  1. Clear out variables and objects immediately after their usage.

    Eg: Set wb = nothing

  2. Open workbooks as read only whenever possible.

    Eg: Set wb = Workbooks.Open(blanketPo, ReadOnly:=True)

  3. Try to use ByRef instead of ByVal whenever possible while passing data. But please take care of the implication also when use these two
  4. After copied large set of data and finished the usage with such data, clear away that from memory by using Application.CutCopyMode = False
  5. Use the following code to empty clip board such as object and stuffs which were copied and keeping in clipboard while running macro. I got this code from another forum

    Dim DataObj As New MSForms.DataObject 'empty the clipboard DataObj.SetText "" DataObj.PutInClipboard

Anyway the moment I choose not to use shared workbook, most of the memory and hang up issues disappeared. So its mostly all about the buggy shared workbook.



来源:https://stackoverflow.com/questions/51740482/why-do-files-remain-in-project-window-after-being-closed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!