我在自动运行包含Bloomberg加载项的Excel时出现问题。
当我手动打开Excel工作表时,Bloomberg加载项的数据功能会自动运行。 但是当我用Powershell打开同一张纸并保存时,没有任何加载的数据
代码 - 启动Excel并打开工作簿:
$xls = New-Object -ComObject Excel.Application
$xls_workbook = $xls.Workbooks.Open("Market_data.xlsx")
$xls_workbook.Activate()
我试图通过这些方法强制重新计算:
$xls.Calculate()
$xls.CalculateFull()
$xls.CalculateFullRebuild()
$xls.Workbooks.Application.CalculateFullRebuild()
$xls_workbook.Worksheets(1).Calculate()
但没有任何效果。奇怪,因为,正如我所提到的,手动打开Excel工作表会导致Bloomberg的数据自动加载。
您是否对Bloomberg附加组件自动化有一些经验?我还要查看包含的.xla宏(BloombergUI.xla,BloombergHistory.xla),但它们受密码保护。 也许,有没有选项强制在Excel中运行所有加载项? 或者是否有可以运行此加载项的$ xls.Application.Run()之类的调用?
谢谢
整个代码:
$xls = New-Object -ComObject Excel.Application
$xls_workbook = $xls.Workbooks.Open("MarketData.xlsx")
$xls_workbook.Activate()
#calculation
$xls.Calculate()
#$xls_workbook.Aplication.Run("RefreshAllStaticData") - THIS RETURNS ERROR, THAT MACRO IS NOT AVAILABLE OR MACROS ARE DISABLED
#my current option of waiting
$internal_timeout = new-timespan -Seconds $timeout
$sw = [diagnostics.stopwatch]::StartNew()
while ($sw.elapsed -lt $internal_timeout){
}
#maybe next option, how to wait until job finished
#$job = Start-Job -ScriptBlock {
#docalculation
#}
#Wait-Job $job -Timeout $timeout | out-null
$date = Get-Date -Format M_dd_yyyy
$file_to_save = "MarketData_$date.xlsx"
$xls_workbook.SaveAs($file_to_save)
$xls_workbook.Close();
$xls.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($xls)
答案 0 :(得分:0)
使用“New-Object -ComObject Excel.Application”打开excel时,根本不加载bloomberg插件。您可以在vba环境中通过alt + F11仔细检查