自动刷新Excel DDE RTD

我订阅了RTD财务应用程序,可以通过DDE将实时数据导出到Excel。 因此,使用DDE复制/粘贴应用程序选项,我创build了一个Excel表格,其中包含实时DDE财务数据。 单元格实际上包含DDE公式。 现在我手动打开,刷新和保存表,但我需要的是一个解决scheme,将打开,刷新数据,保存并自动closures此Excel表。

我现在没有如何附加文件,所以这里是它的截图。 我的Excel DDE文件

由于我是vba和vbscript的新手,我正在寻找一个解决scheme,但没有任何成功,尤其是不能自动更新(刷新)的DDE数据的互联网。

过去几天我一直在做的是在search,尝试和定制不同types的vbamacros和vbscript,今天我完全迷茫和迷茫。

我已经尝试了一堆build议的解决scheme,即使你刷新数据并退出与保存macrosExcel和打开工作簿,Excelmacros刷新所有数据连接表和枢轴表,然后导出到csv枢轴但在我的情况下,他们不工作。

任何解决scheme,参考,代码示例将不胜感激。

请尝试下面的一个,使用时要小心

Application.Calculation = xlCalculationManual Application.Calculation = xlCalculationAutomatic

这套设置整个Excel应用程序来自动或手动计算公式。 如果您使用Application.Calculation = xlCalculationManual

你会注意到你的自动公式不再工作。

感谢@mulla的回复,但是这不起作用。 在VBScript我得到运行时错误,在VBA中没有任何反应(不影响刷新)。 Worksheet.Calculate也是一样的。

比手动更新链接(数据)时logging了一个macros,以检查Excel如何进行更新,这实际上工作,但不是所有的时间。 如果我手动打开工作簿,并且保持打开状态,那么数据会不断刷新(不是我所需要的),因此完全可以打开工作簿。 如果只通过vbscript打开工作簿(我需要的),正如你可以在下面的输出中看到的一些值成功导出(为了更快的刷新,我相信),一些是#N / A(对于较慢茶点)。 所有数据每秒刷新一次,除了打开成功导出的值立即刷新的文件,#N / A值需要刷新几秒(2-3s)。

logging器macros使用ActiveWorkbook.UpdateLink如下(下面的代码是为第一行,但使用相同的逻辑和其余的行):

 Sub PriceUpdate() ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways ActiveWorkbook.UpdateLink Name:= _ "vegadde|VEGA!897789,148,1@""1,\""12,0,0\"""",1", Type:=xlOLELinks ActiveWorkbook.UpdateLink Name:= _ "vegadde|VEGA!897789,148,1@""1,\""12,0,0\"""",3", Type:=xlOLELinks ActiveWorkbook.UpdateLink Name:= _ "vegadde|VEGA!897789,148,1@""1,\""12,0,0\"""",4", Type:=xlOLELinks ... End Sub 

然后我用vbscript调用macros,并用时间戳名称的CSV逗号分隔文件导出数据:

 Option Explicit Dim objExcel, objBook, objSheet Set objExcel = CreateObject("Excel.Application") Set objBook = objExcel.Workbooks.Open ("d:\exptest\exptest.xlsm", 0, False) 'Set objSheet = objBook.Worksheets.Item(1) objExcel.DisplayAlerts = False objExcel.Run "PriceUpdate" WScript.Sleep 5000 ' Delay in order to update links objBook.SaveAs "d:\exptest\" & Year(Now) & "." & Month(Now) & "." & Day(Now) & "_" & Hour(Now) & "-" & Minute(Now) & ".txt",6 objBook.Close False objExcel.DisplayAlerts = True objExcel.Quit 'Set objSheet = Nothing Set objBook = Nothing Set objExcel = Nothing 

我得到的是以下输出:

 Inst,Price,Datetime USD,1.1015,7/22/2016 12:48 GBP,#N/A,#N/A CHF,#N/A,#N/A SEK,9.4962,7/22/2016 12:48 NOK,#N/A,#N/A JPY,#N/A,#N/A DKK,#N/A,#N/A CAD,#N/A,#N/A AUD,1.47395,7/22/2016 12:48 RUB,71.0082,7/22/2016 12:48 

我努力学习不同更新背后的Excel逻辑,以解决我的问题,并得到所需的解决scheme,但没有成功。

这只是一个包含22个链接的testing文件。 真正的有482个链接需要更新。