运行公式后保存为PDF

时间:2018-03-22 10:01:55

标签: excel vba excel-vba pdf bloomberg

我一直在讨论这个问题。我已经看到类似的问题已经解决但到目前为止应用这些解决方案只是给我带来了其他错误。

我有一张连接到Bloomberg的电子表格。我希望将电子表格保存为pdf,并插入不同的公司名称/代码。但是代码运行得太快了。

所以我得到的只是几个pdf文件说#N / A请求数据...... 约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来避免该主题。

谢谢大家的帮助

2 个答案:

答案 0 :(得分:0)

Bloomberg公式在宏运行时不刷新。如果你想刷新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

答案 1 :(得分:0)

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

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