[英]python script to refresh spreadsheet's BLOOMBERG data
我有一堆 excle 工作表,它們提取了我在 Python 中用於各種事情的Bloomberg 日終數據。 我的問題如下:
有沒有辦法告訴工作表刷新彭博數據?
傳統的刷新都不起作用,就像在excel中按f9不會刷新它們一樣。 我知道如何做到這一點的唯一方法是單擊(在 excel 中)bloomberg 選項卡下的刷新圖標,兩個箭頭。 我很想自動化它。
這就是我現在所擁有的:
import win32com.client
import time
def refr_sheet():
app_global = win32com.client.Dispatch("Excel.Application")
global_sprdsheet = app_global.Workbooks.open('C:\\Users\\Ako\\Desktop\\ako_files\\work_sheets\\global.xlsx')
global_sprdsheet.RefreshAll()
time.sleep(12)
global_sprdsheet.Save()
global_sprdsheet.Close()
app_global.Quit()
這適用於重新計算一般的 excel 計算公式,但不會刷新Bloomberg(=BHD 類型)公式。
歡迎任何建議!
有兩個選項: 簡單的解決方案在工作表中創建宏(需要制作文件 xlsm 而不是 xlsx)
子 refresh_bbg()
'取決於您的設置,可能值得檢查 Bloomberg api 是否安裝在此處,如果沒有則安裝。
Application.Run ("bloombergui.xla!RefreshEntireWorkbook")
結束子
然后在python中
global_sprdsheet.Application.Run("global.xlsm!refresh_bbg")
但我認為更好的解決方案是通過 tia 或 pdblp 在 python 中進行 bbg 數據收集。 然后將數據寫入文件。 根據我的經驗,這更可靠。
我已經使用win32com打開excel並將其帶到頂部並開始一個一個地按下按鈕,延遲1秒,然后保存並關閉它。
import time
import pyautogui
import win32com.client
from win32gui import SetForegroundWindow
xl = win32com.client.DispatchEx("Excel.Application")
wb = xl.workbooks.open("C:/file.xlsx")
xl.Visible = True
SetForegroundWindow(xl.hwnd)
time.sleep(3)
pyautogui.typewrite(['alt', 's', 'r', 'a'], interval=1)
time.sleep(3)
wb.Close(SaveChanges=1)
xl.Quit()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.