【发布时间】:2013-09-01 02:25:12
【问题描述】:
我想每 2 秒保存一次 Excel。数据通过 DDE 在此 excel 中更新,并希望每 2 秒读取一次此数据。不幸的是,这些数据没有保存在硬盘上。
我知道宏可用于在指定时间点后保存文件但不想使用宏。
由于此工作表中的数据通过 DDE 频繁更新(每 100 毫秒),因此工作表更改事件触发过于频繁。
下面是我正在尝试但没有成功的代码。
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
请帮忙
【问题讨论】:
-
通过 DDE 每 100 毫秒更新一次电子表格是不可行的;也不是每两秒保存一个电子表格。 DDE 太慢了,如果有任何数据量的话,磁盘 IO 也是如此。你需要重新考虑你的整个方法,IMO。
-
我同意@KenWhite 的观点,每两秒钟可能有点过于雄心勃勃。 CPU/内存中的操作可以很容易地频繁完成,但写入磁盘需要更长的时间。如果它是一个特别小的文件和/或您正在写入高速 SSD,这可能是可行的。
-
我对标题“不使用宏”也有点困惑,因为您稍后会为您尝试使用的宏提供代码。您的意思是您不想使用记录步骤并使用自动代码生成的宏,而只想使用您使用 VBA 手动编码的宏?
-
实际上我的问题与stackoverflow.com/questions/17008382/… 类似,但正如您所见,这个问题没有一个答案,所以我正在尝试不同的方法,即每 2 秒保存一次文件并阅读它。 @chrisPorsser,通过宏意味着我不想要任何用子例程或函数编写的代码。代码必须在事件处理程序中,否则 DDE 不允许宏运行。虽然我只有 1% 的希望得到解决 :(
-
您在下面抱怨人们在“事后分析”上使用他们的精力而不是提供帮助。我认为这些更像是“事前分析”,即试图帮助你事先集中注意力。如果答案确实有帮助,请不要忘记点击旁边的复选标记接受它。