使用 win32com 连接到新的而不是 existing/running 的 COM 服务器实例

Using win32com to connect to a new rather than existing/running instance of a COM server

我正在使用win32com包驱动Excel作为后台计算引擎:

import win32com.client as wc

#Get a dispatch interface for the Excel app
_xl = wc.Dispatch('Excel.Application')

就目前而言这很好,但是 Dispatch 将连接到 Excel 的现有实例(如果已经有 运行)。如果用户已经 Excel 打开并且正在处理某些东西,那么这可能会导致问题。

有没有办法指定我想要一个 Excel 的新实例,并为该实例创建一个调度接口?

在理想情况下,我会将该实例保留为 'private',即它不会被添加到 运行 对象 Table(ROT)并且没有其他进程可以获得它的接口。

您可以将 win32com.client.DispatchEx("Excel.Application")DispatchEx 一起使用,而不仅仅是 Dispatch。这似乎对我有用,可以将它作为一个单独的实例打开,但不确定 ROT(不知道那是什么)。


我知道我以前碰到过这个问题,但反过来:What is the difference between Dispatch and DispatchEx