如何让python等到Excel宏/刷新完成

时间:2012-08-06 16:56:28

标签: python excel excel-vba win32com vba

我正在使用Python在excel中运行宏。我希望Python关闭excel。宏刷新excel中的数据连接可能很慢。

如何让python等到刷新完成后再关闭。这就是我正在使用的东西,我需要在xl.Quit之前做一些事情,等待宏的刷新完成????

 import win32com.client
 import os

 xl = win32com.client.DispatchEx("Excel.Application")
 wb = xl.workbooks.open("X:\Backoffice\Options Trading\BloombergRate.xlsm")
 xl.Visible = True
 xl.run("Refresh")
 xl.Quit()

我可以等待这项工作吗?

2 个答案:

答案 0 :(得分:1)

修改您的Refresh宏,将QueryTable.BackgroundQuery属性设置为False。这应该导致宏阻塞,直到它完成。

答案 1 :(得分:1)

您甚至不必设置宏来运行它。 win32com有一个刷新所有数据连接的本机方法。

import win32com.client
import os

xl = win32com.client.DispatchEx("Excel.Application")
wb = xl.workbooks.open("X:\Backoffice\Options Trading\BloombergRate.xlsm")
xl.Visible = True
wb.RefreshAll()
xl.Quit()