-1

am very new in vb. I have an Excel file which is Auto Saving in intervals. Now I want to stop this Auto Saving Function by Using another Command Button... plz help me ... their is the Code ...

Private Sub AutoSave_Cmd_click()

dTime = Time + TimeValue("00:00:05") 'Set Time as per requirement

With Application

   .OnTime dTime, "AutoSaveAs"
   .EnableEvents = False
   .DisplayAlerts = False
   ThisWorkbook.SaveAs "C:\<My File Path>\Auto_Save_MACRO.xls"
   .EnableEvents = True
   Application.EnableEvents = False

End With

End Sub

Now my question is what will be the code to stop Auto Save function Through "Stop_Auto_Save_Cmd" command button? Please Help Me ... Thanks in advance ...

Private Sub Stop_Auto_Save_Cmd_click()

'What will be the code here?

End Sub

4

1 回答 1

2

您的代码片段看起来很像这里的代码- 不同之处在于我认为我链接中的代码有效,而您的可能无效。

当我描述“工作”代码如何工作时,您应该能够弄清楚为什么您的代码不能:

Public dTime As Date 

Sub AutoSaveAs() 
    dTime = Time + TimeValue("00:05:00") 
    With Application 
        .OnTime dTime, "AutoSaveAs" 
        .EnableEvents = False 
        .DisplayAlerts = False 
        ThisWorkbook.SaveAs "FilePath&NameHere(no .xls)" 
        .EnableEvents = True 
    End With 
End Sub 

在这里,您可以看到在模块级别声明的Public变量;dTime它在名为 的例程中设置为某个合理的时间(现在 + 五分钟)AutoSaveAs(),然后指示Application(即 Excel)AutoSaveAs在计时器用完时执行另一个调用(在此示例中,每五分钟一次)。在设置“五分钟后再次呼叫我”命令后,它会执行实际的 SaveAs,并禁用警报。

要让它工作,你需要AutoSaveAs第一次打电话;在那之后,它会“调用自己”,因为计时器每五分钟就会响一次(如果你愿意,这就像该函数不断按下它自己的贪睡按钮)。这可以在与单击以实现“自动保存”功能的按钮关联的代码中完成(或者它可能是 AutoOpen 事件 - 这取决于您想要的行为):

Private Sub AutoSaveOn_Click()
    AutoSaveAs
End Sub

最后,你需要一些东西来“关闭”事件循环(而不是“打盹”,在闹钟上点击“关闭”)。将其放入另一个(“关闭”)按钮的处理程序中:

Private Sub AutoSaveOff_Click()
    Application.OnTime dTime, "AutoSaveAs", , False 
End Sub

第四个参数False表示“取消计划”。它关闭了从第一次调用开始的“无限循环” AutoSaveAs。如果你愿意,它会拔掉闹钟。

要完整,您必须添加一个处理文件何时关闭的处理程序 - 因为如果您关闭工作簿但保持 Excel 打开,计时器将继续运行,这将给出一个非常奇怪和烦人的错误消息。所以你需要做这样的事情:

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Application.OnTime dTime, "AutoSaveAs", , False 
End Sub 

注意 - 我从上面给出的链接中稍微修改了代码,并希望将示例归功于原作者(Dave Hawley)。我所做的只是展示了如何解释它(并且从与您拥有的代码的相似性来看,我认为您已经看过同一个站点,或者至少是该站点副本的副本......)

于 2013-05-09T00:12:38.070 回答