Start a new instance of a COM application


If you're using COM to automate, say, Excel there will come a time when you want .Dispatch to fire up a new instance of the application, not to interfere with the one already running on the desktop. I use this, for example, when my users run a sql2excel utility I wrote: they've already got vast and complex worksheets open, and they don't to risk losing anything.

Use DispatchEx

After that long introduction, the answer is very simple: instead of using .Dispatch, use .DispatchEx to start the application. If you want to get fancy, you can specify things like whether you want to run the application on another machine, whether you want it in-process or out-of-process (which is what you're doing by default) and so on.

import win32com.client

xl = win32com.client.DispatchEx ("Excel.Application")