【发布时间】:2018-03-22 10:01:55
【问题描述】:
我已经关注这个问题有一段时间了。我已经看到类似的问题已经得到解决,但到目前为止,应用这些解决方案只是给我返回了其他错误。
我有一个连接到彭博的电子表格。我想将电子表格另存为 pdf 并插入不同的公司名称/代码。但是代码运行得太快了。
所以我得到的只是几个 pdf 文件,上面写着#N/A Requesting Data... 大约 50 次。
我已经看到有人在使用
Application.Wait
或者做一些随机计算,比如
For x=1 to x= 10^9
只是为了争取时间,但计算机似乎被这些命令占用,暂时无法处理我的公式。
在一个类似的帖子中我看到了
Application.ontime + TimeValue("00:00:05"), "Other task"
但到目前为止,这只给我返回了错误。
这是我当前的代码,因此您可以了解我要做什么。在当前版本中,它告诉 (N Times) 所有 makros 都已停用或 Print1() 在此工作表中不可用。我还可以看到它以与不添加 Application.OnTime 相同的速度运行。
Sub All_To_Pdf()
Dim i,N As Integer
N=100
For i = 1 To N
Range("I4") = Sheets("List").Cells(i, 3).Value
Application.OnTime Now + TimeValue("00:00:10"), "Print1()"
Next
End Sub
还有一个简单的打印功能
Sub Print1()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"FOLDER" & Range("A3").Value & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End Sub
更新:
现在我改变了策略并通过将值复制到不同的 excel 中并从那里将其保存为 pdf 来避免该主题。
谢谢大家的帮助
【问题讨论】:
-
您是否尝试过使用DoEvents.?
-
Bloomberg 公式在 vba 代码运行时不会被刷新/计算...您需要在按钮的帮助下为每个股票每次运行此代码...而且在这里您应该刷新设置计时器之前的Bloomberg 公式
RefreshAllStaticData。编辑:您可以为此使用bloomberg API。数据检索速度非常快,无需依赖布隆伯格公式。 -
@Foxfire And Burns And Burns 你能说得具体一点吗?我对 VBA 不是很好,所以请你说得更具体些:)
-
@Maddy 你是说技术上不可能我得到一个像 =BDP 或 =BDH 这样的刷新符号公式吗?我尝试使用 RefreshAllStaticData 但 Excel 没有找到它。我确实发现的是 RefreshAll 但这并没有改变任何东西。我将如何使用 Bloomberg API?您的意思是将所有内容都嵌入代码中,而不是嵌入到 Excel 工作表本身中吗?
-
@cvaz 在宏运行时无法刷新Bloomberg 公式。我记得,去年我也遇到过同样的问题。之后我开始使用
Bloomberg V3COM API wrapper for VBA,它解决了我的问题。