0

我想每 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

请帮忙

4

2 回答 2

2

Nidhi,这里的人们正在努力帮助你,你需要明白没有人可以进入你的大脑来理解你真正想要问的问题。因此,在提出任何答案之前提出问题以清楚地理解问题是很自然的。这里的人,当他们无法理解一个简单的问题时,同样会感到沮丧,如果这个人花一点额外的时间来更好地解释事情,他们所花费的时间本来可以很容易地节省下来。因此,对那些试图帮助你的人表示赞赏,根本不会造成伤害。

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

下一个选项可以是 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 最好的计时器功能。如果您有任何问题,请告诉我。

谢谢, 维卡斯

于 2013-08-31T18:25:12.063 回答
1

(这完全远离 OP 标签,但只是认为我会提出一个可能的替代方案)

创建一个小型.NET控制台应用程序。

使用Timer可用于创建您需要的此定时循环的对象之一。

然后在每次扫描循环时使用对 Excel 互操作库的引用,看起来您可能需要打开此工作簿,保存它,然后再次关闭它......取决于书中的计算和文件的大小Excel文件在您的机器上是否可以在 2 秒内打开/计算/保存?

于 2013-08-31T10:12:49.650 回答