更新彭博API静态数据

我想从一张纸复制和粘贴数据到另一张纸。 原始数据来自Bloomberg API函数。 我发现彭博数据单元在macros完成运行后才会更新。 我试图build立一个私人的function,让我复制它之前的静态数据更新。 这是我的代码:

Private Sub ProcesData() Application.Run Call Application.OnTime(Now + TimeValue("00:00:01"), "ProcessData") End Sub Sub Macro3() Dim i As Integer i = 1 Do Until i > 2 Sheets("Sheet1").Activate Cells(1, 3).Value = Cells(i, 1) i = i + 1 Call Application.OnTime(Now + TimeValue("00:00:01"), "ProcessData") Range("C4:E181").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select lMaxRows = Cells(Rows.Count, "A").End(xlUp).Row Range("A" & lMaxRows + 1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Loop End Sub 

啊,彭博API …很多问题。

所以,当你使用函数调用来做彭博请求的时候,蜂窝呼叫站点接收一个回叫并刷新数据。

问题是,在自动化的情况下,数据可能会部分回来,您必须等到数据完成才能继续处理数据。

所以,这个解决scheme有三种方法。

  1. 上次我看,这是彭博社推荐的那个。 有一个例程,刷新电池公式的调用。 这有一个计时器,并recursion调用自己,直到数据已被检索。 这个技巧是要知道数据何时被正确地检索。 检查数据区域是否有错误,表示尚未完成。
  2. 另一种解决scheme是使用Application.Run调用调用,在代码中构build公式并使用VBA调用。 这使您不能在工作表中处理这些function。 但实际上与1相同。
  3. 您可以设置对Bloomberg API的引用,并使用COM来执行请求。 这是一个更清洁的方法,您可以更轻松地将其整合到您的代码中,从而有效地创build一个彭博数据调用API。

我会build议,如果可能的话去选项3.虽然多一点努力,te代码变得更干净。 当您的工作簿在结构等方面变得更复杂时,选项1.和2.可能会非常棘手。

如果你search你的彭博社的帮助(F1 F1的帮助服务应该能指引你正确的方向,就我看来,这是最令人印象深刻的帮助系统!)彭博社确实有一些例子说明了方法上面强调了。

所以,随着手头的问题,并最终回答你的问题:)我会调整你的代码,实际上做function调用,最初做一个调整(这将调用您的请求彭博)。 然后进入一个自我调用的recursion函数,直到数据中没有错误。 在此之后,您复制您的数据。

希望有所帮助。