2012-07-23 85 views
3

我在MS-Access中只有一台计算机运行正常时间的宏,但在另一台计算机上运行时,它的运行时间为100%。我该如何减慢MS-Access中宏的执行速度

我怀疑这是因为宏运行速度很快,在移动到下一个宏之前没有完成一个步骤的执行。有没有一种方法可以在步骤之间暂停?

我的宏步骤如下:

  1. RunCode的进口数据
  2. 打开追加查询
  3. 打开追加查询
  4. 打开更新查询
  5. RunSQL为删除,数据

第一步和最后一步执行1 00%的时间在两台计算机上,但中间步骤有时会失败并且没有错误。我曾尝试在宏之间添加此代码以减慢速度。我无法弄清楚如何正确应用它,或者如果这个解决方案甚至是正确的。

Public Function SlowMacro() 
Application.Wait (Now + TimeValue("0:00:02")) 
End Function 

任何帮助表示赞赏,在此先感谢。

+0

找你的代码会有帮助。没有任何意义,第2步到第4步失败并没有错误。你有什么错误处理?理想情况下,您想了解步骤2到步骤4失败的原因,而不是使用像“Wait”例程这样的解决方法。 – LittleBobbyTables 2012-07-23 20:29:32

+0

'Application.Wait'将停止所有MS Access执行任何操作,这意味着你什么也没有做。但是,我认为你对问题的理解错误,但是由于你没有提供任何细节,我不能真正建议从哪里开始寻找实际问题。 – 2012-07-23 20:30:00

+0

除调用该函数外,没有真正的代码。该宏只是设置为打开追加,并更新查询。我应该用程序化方式打开它们吗? – talbright 2012-07-23 20:32:20

回答

3

如果你希望你的SlowMacro()功能造成2秒的停顿,你可以使用代码访问网站:API: Make code go to Sleep

然后我想这应该是你的函数工作。

Public Function SlowMacro() 
    sSleep 2000 
End Function 

这些是我链接的网页的关键部分。

Private Declare Sub sapiSleep Lib "kernel32" _ 
     Alias "Sleep" _ 
     (ByVal dwMilliseconds As Long) 

Sub sSleep(lngMilliSec As Long) 
    If lngMilliSec > 0 Then 
     Call sapiSleep(lngMilliSec) 
    End If 
End Sub