I'm trying to hide Excel during a long script in which I do some web-scraping. I'm able to hide the application just fine, the problem is that when I change .Visible back to True, I'm getting 1-2 more additional applications (just empty Excel shells). I'm guessing one of these are my PERSONAL.xlsb workbook, but I'm not sure what the other one is - sometimes I get one extra, sometimes I get two. The only way I can close these shell files is by ending the EXCEL.EXE process via task manager.
I've tried hiding just the main window (Windows(1)) as well to no avail (it just hides the workbook, not the application):
Sub Test()
Windows(ThisWorkbook.Name).Visible = False
Application.Wait (Now + TimeValue("0:00:05"))
Windows(ThisWorkbook.Name).Visible = True
End Sub
How can I just have my main workbook re-appear?
Sample code:
Sub Test()
Application.Visible = False
Application.Wait (Now + TimeValue("0:00:05"))
Application.Visible = True
End Sub

Edit: This is on Windows 7, Excel 2016
Edit2: Running just Application.Visible = True by itself also gives me these two phantom applications.
Edit3: The issue definitely has to do with having macros stored in the PERSONAL.xlsb file - when I go onto a fresh computer and add a new macro to this workbook, I can reproduce the issue. However, I'm still not sure how to avoid it...
Task manager:

The script that opens Excel from Filemaker Pro:
Open URL [With dialog:Off; "C:\Users\Username\Desktop\TestFile.xlsm"]
Inside TestFile.xlsm:
Private Sub Workbook_Open()
Application.Visible = False
'Refresh a query in the Excel workbook that is linked to Filemaker Pro
'Webscrape, webscrape, webscrape from a worksheet inside this Excel document
'to a hidden Internet Explorer Window (ewww, IE!)
Application.Wait (Now + TimeValue("0:00:05"))
Application.Visible = True
'Either close Excel completely or reload my main instance of Excel
End Sub
I've realized that I can just completely quit Excel with Excel.Application.Quit, but I haven't decided if I want to exit out right away, or repaint a UserForm in Excel that summarizes the import process
At the beginning of the macro add 'Application. ScreenUpdating = False'. At the end of the macro add 'Application. ScreenUpdating = True'.
Turn OFF Screen Updating in VBAFirst, type the keyword “Application”. After that, press a dot “.” to open the properties and methods list. Now, select “ScreenUpdating”. In the end, specify “False” to it.
If the Macro is simply in a continuous loop or is running for too long you can use one of these keyboard shortcuts to kill it: Esc hit the Escape key. Ctrl + Break hit Ctrl key and then the break key, which is also the pause key.
I was able to reproduce your issue. First, I tested hiding the Application without having PERSONAL.xlsb loaded, and it worked fine. Then I loaded PERSONAL.xlsb and got the same behavior you did: an extra Excel shell became visible after Application.Visible = True.
I'm not sure why you sometimes get two extra shells, but maybe you have another addin (.xlam) loaded? You could try adding some code to unload all addins first, but I have an alternative solution: why not just launch a new instance of Excel, load your macro workbook in it and run the macro? For example, if your workbook is called C:\Book1.xlsb and the macro in it is "MyMacro" then create a second workbook with code that will launch Book1. Like this:
Sub LaunchIt()
Dim xlApp As Excel.Application
Dim wb As Workbook
Set xlApp = New Excel.Application
With xlApp
Set wb = .Workbooks.Open("C:\Book1.xlsb")
.Run "'" & wb.Name & "'!MyMacro"
wb.Close SaveChanges:=False
.Quit
End With
End Sub
The new instance of Excel is not visible by default, so no need to set visibility. I tested it and it worked for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With