我想每2秒保存一次excel。通过DDE在此excel中更新数据,并希望每2秒读取一次该数据。不幸的是,这些数据不会保存在硬盘上。
我知道宏可用于在指定的时间点之后保存文件但不想使用宏。
由于数据在此工作表中经常通过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
请帮忙
答案 0 :(得分:2)
Nidhi,这里的人们正在努力帮助你,你需要明白没有人可以通过你的大脑来理解你真正想要问的问题。因此,在提出任何答案之前,提出问题以清楚地理解问题是很自然的。这里的人们,当他们无法理解一个简单的问题时会同样感到沮丧,他们花费的时间本可以轻松保存,如果这个人花了一点时间更好地解释事情。因此,对那些试图帮助你的人给予信任,根本不会受到伤害。
好的,回到你的问题。我可能错了,但我认为在DDE更新时不会触发SheetChange事件。如果我错了,请纠正我。
下一个选项可以是Application.OnTime功能。
在Workbook Open Method中编写以下代码:
Private Sub Workbook_Open()
Dim currentTime As Date
currentTime = DateAdd("s", 2, Now)
Application.OnTime currentTime, "SaveFile"
End Sub
然后添加一个新模块并在新模块中添加以下功能:
Public Sub SaveFile()
ThisWorkbook.Save
Dim currentTime As Date
currentTime = DateAdd("s", 2, Now)
Application.OnTime currentTime, "SaveFile"
End Sub
上面的代码将创建一个计时器,该计时器每两秒运行一次以保存文件。这种方法有利有弊,但这是Excel最好的定时器功能。如果您有任何问题,请告诉我。
谢谢, 维卡斯
答案 1 :(得分:1)
(这完全远离OP标签但只是想我提出了一个可能的选择)
创建一个小型.NET
控制台应用程序。
用户可以创建这个定时循环的Timer
个对象之一。
然后在循环的每次扫描中使用对Excel Interop库的引用,看起来您可能需要打开此工作簿,保存它,然后再次关闭它.....根据书中的计算和Excel
文件的大小是否可以在您的机器上在2秒内打开/计算/保存?