Automate start VB in another instance of excel and continue _without_waiting for code to finish

B

bosenator

Hi all,

Can anyone help me out with my last step in getting multiprocessing
automated?
I want to open several instances of excel and have each instance run
VB for about 2 hours. I guess I'm halfway:

The code below starts a new instance of excel, opens the specified
file, and starts the VB.
The problem is that it will now wait till the VB code is finished,
whereas I'd like it to continue starting up the other instances..

Can anyone help me out on this one?

Regards,
Poniente



Sub XlNewInstanceWithAddins(Optional PathFile As String, Optional
StartSub As String)
Dim xl As Object
Dim ai As Object

Dim PersPath As String

PersPath = Workbooks("Personal.xls").Path


Set xl = CreateObject("Excel.Application")

On Error Resume Next

For Each ai In Application.AddIns
If ai.Installed Then
xl.Workbooks.Open(ai.FullName).RunAutoMacros 1
End If
Next

xl.Workbooks.Open PersPath & "\Personal.xls"
xl.Visible = True

If PathFile <> "" Then
xl.Workbooks.Open PathFile
If StartSub <> "" Then
xl.Run StartSub
End If
End If

Set xl = Nothing

End Sub
 
P

Peter T

Not sure I quite follow but I guess the open event of one of those addins
(you are opening all the installed ones) goes on to do a lot of stuff. If
that's the case, in the relevant open event call that long code with an
OnTime macro

In passing,
xl.Workbooks.Open(ai.FullName).RunAutoMacros 1

Be careful doing that with all (unknown) addins with that in case the addin
is not the type that might have Auto_Open, eg a dll or xll.

Regards,
Peter T
 
B

bosenator

Hi Peter,
Thanks for taking time to take a look at this issue!

Actually, loading the adds in that part of the code takes 20 seconds,
but works fine..
I'm in need for inspiration on the 'xl.Run StartSub' line.
That line will run the vba code I selected, but it should only start
the code and continue with End If etc.. and not first wait 2 hours for
the 'StartSub' code to finish.

Hope this clearifies the problem a bit..

Regards,
Poniente
 
P

Peter T

xl.Run StartSub

I missed that part. Same suggestion as before.
Put a new routine in the same workbook as StartSub

Sub SartSubOnTime()
Application.OnTime Now, "StartSub"
End Sub

and do
xl.Run SartSubOnTime

I don't know if you will get the similar routines in different automated
instances to run asynchronously like that but give it a try. At the very
least all your code in your main routine should complete more quickly.

Regards,
Peter T


Hi Peter,
Thanks for taking time to take a look at this issue!

Actually, loading the adds in that part of the code takes 20 seconds,
but works fine..
I'm in need for inspiration on the 'xl.Run StartSub' line.
That line will run the vba code I selected, but it should only start
the code and continue with End If etc.. and not first wait 2 hours for
the 'StartSub' code to finish.

Hope this clearifies the problem a bit..

Regards,
Poniente
 

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