【问题标题】:Save to PDF after running Formulas运行公式后保存为 PDF
【发布时间】: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,它解决了我的问题。

标签: vba excel pdf bloomberg


【解决方案1】:

Bloomberg 公式在宏运行时不会刷新。如果您想刷新 Bloomberg 公式,则需要停止宏并留出时间刷新。

要刷新彭博公式,请使用End Sub之前的任何方法

Application.Run "RefreshEntireWorksheet"

Application.run "RefreshAllWorkbooks"

Application.run "RefreshAllStaticData"

要使用 VBA 包装器和 Bloomberg API 从 Bloomberg 检索数据。请访问以下博客。它有一步一步的解释,也有一些例子。

用于 VBA 的 Bloomberg V3COM API 包装器 http://mikejuniperhill.blogspot.in/2013/05/bloomberg-v3com-api-wrapper-for-vba.html

【讨论】:

    【解决方案2】:

    尝试编写您的子程序以单独下载彭博数据,然后为下一个任务添加 Application.Ontime。 我的意思是这样的:

    Sub Bloomberg ()
    % Call your sub to download
    % Application.Ontime
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多