每隔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