每隔2秒保存Excel文件而不使用macros

我想每2秒保存一次excel。 数据通过DDE在这个Excel中更新,并希望每2秒读取一次这些数据。 不幸的是,这些数据并没有保存在硬盘上。

我知道macros可以用来保存指定时间点之后的文件,但不想使用macros。

由于数据通过DDE(每100 MS)在本表中经常更新,因此表单更改事件经常触发。

下面是我正在尝试,但没有成功的代码。

Dim ctme, ptme As Integer Private Sub Workbook_Open() ctme = Second(Now) ptme = ctme - 2 End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) ctme = Second(Now) If (ctme - ptme) = 2 Then Me.Save ptme = ctme End If End Sub 

请帮忙

(这是完全远离OP标签,但只是想我会提出一个可能的select)

创build一个小的.NET控制台应用程序

用户可以使用其中一个Timer对象来创build所需的定时循环。

然后在循环的每次扫描中使用对Excel Interop库的引用,看起来您可能需要打开此工作簿,将其保存,然后再次closures它…..取决于书中的计算以及Excel文件是否可以在你的机器上在2秒内打开/计算/保存?

Nidhi,这里的人正试图帮助你,你需要明白,没有人能够进入你的大脑去理解你实际上想要问什么。 因此,在提出任何答案之前,先提出问题清楚地理解问题是很自然的。 当这里的人们不能理解一个简单的问题的时候同样会感到沮丧,他们花费的时间可以很容易地被节省,如果这个人花了一些额外的时间来更好地解释事情。 所以把信誉给那些试图帮助你的人,根本不会有什么伤害的。

好的,回到你的问题。 我可能是错误的,但我认为,在DDE更新没有触发SheetChange事件。 如果我错了,请纠正我。

下一个选项可以是Application.OnTimefunction。

在工作簿打开方法中写入以下代码:

 Private Sub Workbook_Open() Dim currentTime As Date currentTime = DateAdd("s", 2, Now) Application.OnTime currentTime, "SaveFile" End Sub 

然后添加一个新模块,并在新模块中添加以下function:

 Public Sub SaveFile() ThisWorkbook.Save Dim currentTime As Date currentTime = DateAdd("s", 2, Now) Application.OnTime currentTime, "SaveFile" End Sub 

上面的代码将创build一个计时器,每两秒钟运行一次以保存您的文件。 这种方法有优点和缺点,但它是Excel最好的定时器function。 如果您有任何问题,请告诉我。

谢谢,Vikas