How to have python wait until an Excel Macro/Refre

2019-08-15 09:17发布

I am using Python to run a macro in excel. and I want Python to close excel. The macro refreshes a data connection in excel which can be slow.

How do I have python wait until the refresh is done to close. This is what I am using, I need something before the xl.Quit that will wait until the refresh in macro is done????

 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()

Wait ways can I make this work?

2条回答
Root(大扎)
2楼-- · 2019-08-15 09:44

You don't even have to set up a macro to run this. win32com has a native method to refresh all data connections.

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()
查看更多
在下西门庆
3楼-- · 2019-08-15 09:56

Edit your Refresh macro to set QueryTable.BackgroundQuery property to False. This should cause the macro to block until it is done.

查看更多
登录 后发表回答