VisualBasic Word中没有与应用程序关联的等待方法

时间:2018-06-20 21:48:49

标签: vba word-vba

我具有VBA代码来运行特定代码,并且我尝试通过使用以下行为其提供3秒的等待时间来暂停下一次执行:

Application.Wait (Now + TimeValue("00:00:03"))

但是出现以下错误:

  

错误:找不到方法或数据变量

4 个答案:

答案 0 :(得分:2)

在开发代码时,最好使用外部库引用(早期绑定)。早期绑定具有智能感知和帮助文档的优势。早期绑定的主要缺点是,如果安装了其他版本的库,则需要更新引用。这样最好是在分发外部引用之前将其删除,并将其转换为后期绑定。

后期绑定使用CreateObject来导入和实例化类对象。

CreateObject("Excel.Application").Wait (Now + TimeValue("00:00:05"))  

或者,您可以引用WinApi Sleep函数。

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) 

用法:

 Sleep 3000 '3000 Milliseconds = 3 second delay

答案 1 :(得分:1)

我尝试了Excel.Application.Wait(Now + TimeValue("00:00:03")),它像一种魅力一样工作!

答案 2 :(得分:1)

我在所有需要粘贴操作的宏中都使用此功能(有时粘贴太快,电脑无法及时复制所选内容导致错误):

Function Wait(ByVal Seconds As Single)
    Dim CurrentTimer As Variant
    CurrentTimer = Timer
    Do While Timer < CurrentTimer + Seconds
    Loop
End Function

然后在任何“Selection.Paste”或“Selection.PasteSpecial”之前应用以下内容:

Application.Excel.Wait (Now + TimeValue("00:00:01"))

您可能还需要启用“工具”>“参考”中的“ExcelPlugInShell 1.0 类型库”才能使其正常运行,因为它默认使用 MS Word 中不可用的语言。

答案 3 :(得分:0)

这对我有用:

Set wsh = VBA.CreateObject("WScript.Shell")
   Dim waitOnReturn As Boolean: waitOnReturn = True
   Dim windowStyle As Integer: windowStyle = 0
   Dim errorCode As Integer

   errorCode = wsh.Run("timeout 5", windowStyle, waitOnReturn)

此代码允许运行cmd命令并等待执行完成,在这种情况下,我正在运行命令“ timeout 5”,它仅等待5秒钟。 我找到了文档here