我发现解决这个问题的方法就是让应用程序暂停一小会儿。这似乎允许清除缓冲区(如果我错了,请纠正我)。
为了让Excel VBA休眠,我Sleep通过在模块顶部编写来暴露Windows API函数:
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Run Code Online (Sandbox Code Playgroud)
然后在每个SendKeys命令之后,我只使用:
Sleep 1
Run Code Online (Sandbox Code Playgroud)
从字面上看,1 毫秒就产生了巨大的差异,并且密钥始终能够正确发送。