Always Open in New Instance

G

Guest

I have an Excel workbook that uses userforms and save/close procedures
extensively to automate some processes. I need this workbook to always open
in a new instance of Excel. If the user already has a workbook open, opening
this file will open in the instance that is already open, which I don't want.
Is there any VBA code that will force this to happen? Much appreciated!
 
G

Guest

Here is some code to make spreadsheets open up in new instances...

Application.IgnoreRemoteRequests = True
'Open your file
Application.IgnoreRemoteRequests = False

Note that what this is doing is it is toggling the setting
Tools|Options -> General ->Ignore Other Applications
 
G

Guest

Thanks, Jim. I know this works if you open the Excel file with the code
first. However, if a user already has a workbook open, opening this file
will open in the same instance as the existing workbook, rather than a new
instance. I am trying to get my workbook to always open in a new instance of
Excel and was hoping to find the code for it. Possibly need a shell file
that runs a macro to fire my workbook into a new instance? Not sure of the
coding though.
 
I

iliace

Put this code in the loader workbook's ThisWorkbook module:

Private Sub Workbook_Open()
Const strPath As String = "C:\myWorkbook.xls"

Dim xl As Excel.Application

Set xl = New Excel.Application

xl.Workbooks.Open (strPath)

xl.Visible = True

Me.Close
End Sub

Change the constant at the top to reflect where your file is located.
 
G

Guest

Thanks - that did the trick! I've thought of an additional way to improve
what I am doing. Do you happen to know any code that will check to see if an
instance of Excel is already open or not? If one isn't open, I can open my
workbook in the same instance brought up by the "opener" workbook. If one is
already open, it forces a new instance. The workbook I want to open has code
"Application.IgnoreRemoteRequests = True", so any additional workbooks opened
while that one is open will be forced into a new instance. Sorry to add
another question!
 
G

Guest

Think I figured it out. Used the following code and seems to work perfectly
for my purposes. Thanks again!

Private Sub Workbook_Open()

Dim xl As Excel.Application
Dim I As Integer
Const strPath As String = "C:\test2.xls"
Set xl = New Excel.Application
I = 0

xl.Workbooks.Open (strPath)
xl.Visible = True

For Each wb In Workbooks
I = I + 1
Next wb

If I > 1 Then
Me.Close
Else
Application.Quit
End If

End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top