我会尽力使这个问题尽可能清楚,因为我是初学者,我很难找到这个问题的解决方案。
目标是运行一个自动打开 Excel 的 Python 代码,运行一些用于 Bloomberg 公式的宏,然后关闭所有内容。
我的Python代码看起来像这样:
import time
import win32com.client as win32
import gc
def update_excel_and_send_email():
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False
try:
wb = excel.Workbooks.Open('mypath')
wb.RefreshAll()
time.sleep(10)
excel.Application.Run("Send2")
except Exception as e:
print("Error: " + str(e))
finally:
wb.Close(SaveChanges=False)
excel.Quit()
excel = None
gc.collect()
if __name__ == '__main__':
update_excel_and_send_email()
基本上,代码是打开一个 Excel 实例,运行宏,然后关闭。我的梦想目标是能够运行这些宏,而无需在屏幕上弹出 Excel。我总是连接到彭博社,而且我也希望即使我的计算机被锁定也能够执行此代码,这要归功于调度程序。即使我的计算机被锁定,它也能工作一两个小时,然后随机地,我通过宏通过电子邮件收到的所有公式都不再用 bbg 更新,并显示为#N/A。每次我用 Excel 运行宏时,我都尝试用公式刷新 Bloomberg,但当 Excel 崩溃时它不起作用。
这是我的两个观察:
任何帮助都将非常受欢迎,因为我确实在解决这个问题,目前无法找到可行的解决方案。
非常感谢您的帮助
与 @braX 的评论相反,这不是网站,而是 Excel 中的 Bloomberg API 请求。
您可以永远跳过 Excel,直接使用 API。 WAPI 拥有您可能需要的所有详细信息(或在此处搜索大量内容)。如果您确实想要 Excel 格式,请在获得数据后将 df 转换为 Excel。
也就是说,当您尝试分发(通过电子邮件)数据时,它违反了每个人都签署的数据馈送附录。标准 API 供桌面使用,这意味着您不应该在没有积极参与查看数据的过程的情况下进行访问。由于这个原因,连接会在一段时间后中断(每当您在手机应用程序上查找内容时也是如此)。如果您需要自动下载,您应该使用数据许可证产品。