如何自动点击运行VBA程序的打开文件按钮

时间:2014-05-20 03:36:13

标签: vba winapi excel-vba sap excel

我正在寻找一种方法来点击“打开文件”按钮。

我写了一个与SAP模块连接的excel-VBA宏。它应该做的是在SAP中添加文件作为附件。结果我得到弹出窗口,只是一个标准的Windows打开文件窗口,以获取文件名和打开文件按钮。

我的问题是如何自动插入文件名(总是已知)并单击该打开的文件按钮?

我在excel-VBA中尝试了sendkeys,但事实证明,一旦打开文件窗口弹出,整个Sub例程就会停止。

我知道我需要Winapi这样做。

1 个答案:

答案 0 :(得分:0)

您可能需要执行DoEvents以允许SAP处理密钥。

从VBA帮助中引用:

  

DoEvents功能

     

产生执行,以便操作系统可以处理其他操作   事件

     

语法

DoEvents( )
     

说明

     

DoEvents函数返回一个表示数字的Integer   在Visual Basic的独立版本中打开表单,例如Visual   基础版,专业版。 DoEvents在所有其他中返回零   应用

     

DoEvents将控制权传递给操作系统。控制权归还   操作系统完成处理后的事件   队列和SendKeys队列中的所有密钥都已发送。

     

DoEvents对于允许用户这样的简单事情最有用   在启动后取消进程,例如搜索a   文件。对于长时间运行的进程,产生处理器会更好   通过使用Timer或将任务委派给ActiveX EXE来完成   组件..在后一种情况下,任务可以完全继续   独立于您的应用程序,操作系统需要大小写   多任务和时间切片。

     

小心任何时候在事件中暂时产生处理器   程序,确保程序不再从a执行   第一次调用返回之前代码的不同部分;这可以   导致不可预测的结果。此外,如果不是其他,请不要使用DoEvents   应用程序可能会无法预料地与您的过程进行交互   在你控制之间的方式。