从Python访问Microsoft自动化对象

从Python访问Microsoft自动化对象,python,object,automation,Python,Object,Automation,我有一组宏,已在excel中转换为外接程序。宏允许我与另一个程序进行交互,该程序具有所谓的Microsoft Automation对象,可以对另一个程序的操作进行控制。例如,我在外接程序中有一个筛选工具,用于筛选其他程序提供的列表,以匹配Excel工作簿中的列表。但这很慢。我可能在另一个程序中有五万行,并且希望筛选出与Excel中三千行列表不匹配的所有行。这种类型的匹配大约需要30-40分钟。我开始怀疑是否有办法用Python来实现这一点,因为我怀疑匹配过程可以在几秒钟内完成 编辑: 谢谢-根据

我有一组宏,已在excel中转换为外接程序。宏允许我与另一个程序进行交互,该程序具有所谓的Microsoft Automation对象,可以对另一个程序的操作进行控制。例如,我在外接程序中有一个筛选工具,用于筛选其他程序提供的列表,以匹配Excel工作簿中的列表。但这很慢。我可能在另一个程序中有五万行,并且希望筛选出与Excel中三千行列表不匹配的所有行。这种类型的匹配大约需要30-40分钟。我开始怀疑是否有办法用Python来实现这一点,因为我怀疑匹配过程可以在几秒钟内完成

编辑:

谢谢-根据看哈蒙德的书的建议,我找到了一些参考资料。然而,尽管我仍在探索,但看起来其中许多都是旧的。例如,哈蒙德的书是2000年出版的,这意味着这本书差不多十年前就写完了。更正我刚刚发现了一个名为PyWin32的包,它的版本是2/2009


这应该让我开始。感谢Mark Hammond和Andy Robinson写的关于从Python访问Windows COM对象的文章


是一个使用Excel的示例。

据我所知,可以在Windows上用Python创建COM对象(这就是自动化对象)。然后假设您可以通过自动化获得列表,那么在python中做您想要的事情应该很容易

然而,尽管我仍在探索,但看起来其中许多都是旧的

COM是旧的。至少从1993年起,这个界面就没有改变过

我在Python.org网站上也没有看到这个包。我搜索了COM包,但没有看到任何有用的东西


最新更新是2009年2月,其中包括Python 3.0支持。

您可能需要win32com软件包

这是我在中找到的一个示例,它显示了如何将com与Excel结合使用。这可能是一个好的开始

# this example starts Excel, creates a new workbook, 
# puts some text in the first and second cell
# closes the workbook without saving the changes
# and closes Excel.  This happens really fast, so
# you may want to comment out some lines and add them
# back in one at a time ... or do the commands interactively


from win32com.client import Dispatch


xlApp = Dispatch("Excel.Application")
xlApp.Visible = 1
xlApp.Workbooks.Add()
xlApp.ActiveSheet.Cells(1,1).Value = 'Python Rules!'
xlApp.ActiveWorkbook.ActiveSheet.Cells(1,2).Value = 'Python Rules 2!'
xlApp.ActiveWorkbook.Close(SaveChanges=0) # see note 1
xlApp.Quit()
xlApp.Visible = 0 # see note 2
del xlApp

# raw_input("press Enter ...")

哈蒙德先生刚刚在Excel stuff上发布了他的“Python for Windows Extensions”的新版本,您可能会发现xlrd和xlwt库也很有用。你可以在PyPI中找到它们:谢谢,@AndyW。固定的。