使用VBA自动单击消息框

时间:2016-02-22 08:57:31

标签: excel vba excel-vba office-automation excel-automation

我正在为我公司的插件自动化测试用例。

在其中一个测试用例中,当我尝试关闭工作簿时将工作簿保存到本地计算机上后,我需要单击“是” - 将编辑后的数据保存到我们的数据库中,“否” - 丢弃编辑或'取消' - 只需关闭消息框。

我尝试过使用sendKeys,但这对我没用。

例如:要通过我的VBA代码点击“否”,我尝试发送标签并输入如下所示的键:

Application.Wait (Now() + TimeValue("00:00:10"))
Call SendKeys("{TAB}", True)
Call SendKeys("{ENTER}", True)

我尝试了各种时间值仍然没有取得任何成功。如果有人可以帮助我,我会很高兴。

提前致谢! :)

更新:截至目前,我一直这样做:

'Some tasks...
ActiveWorkbook.Save
Call Application.Run("workbook.xlsm!Discard")
Application.DisplayAlerts = False
ActiveWorkbook.Close SaveChanges:=False
Application.DisplayAlerts = True

但有没有办法获取消息框的窗口对象引用?或者无论如何坚持工作流程:编辑工作簿 - >保存 - >尝试关闭 - >选择放弃/提交对数据库的更改?

注意:通过放弃/提交对数据库的更改,我的意思是更新数据的服务器。 Excel只是用户的界面。我不想只保存excel,而是在服务器上调用discard / save更改的操作......

1 个答案:

答案 0 :(得分:3)

如果您已保存工作簿,则只需关闭工作簿即可。请尝试以下代码

apiRouter.post('/supplier-list/remove/', function(req,res) {
  console.log(' I got it!! ' + req.body.supplierId);
});

这将关闭您的工作簿,并且您不会选择任何选项。