【问题标题】:How to automatically click on open file button running VBA procedure如何自动单击运行 VBA 程序的打开文件按钮
【发布时间】:2014-05-20 03:36:12
【问题描述】:

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

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

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

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

我知道我需要 Winapi 来执行此操作。

【问题讨论】:

  • 请发布您现有的代码,以便人们了解您取得的成就和无效的内容。

标签: vba winapi excel sap


【解决方案1】:

您可能需要发送DoEvents 以允许 SAP 处理密钥。

引用 VBA 帮助:

DoEvents 函数

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

语法

DoEvents( )

备注

DoEvents 函数返回一个表示次数的整数 在独立版本的 Visual Basic 中打开表单,例如 Visual 基础版、专业版。 DoEvents 在所有其他情况下返回零 应用程序。

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

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

警告任何时候您在事件中临时让出处理器 过程,确保该过程不再从一个 在第一次调用返回之前代码的不同部分;这可以 导致不可预知的结果。此外,如果有其他情况,请勿使用 DoEvents 应用程序可能会在无法预料的情况下与您的程序进行交互 在你交出控制权期间的方式。

【讨论】:

  • 实际上是 VB6 对 2001 年 10 月 MSDN 的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
  • 2019-02-14
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
相关资源
最近更新 更多