2016-02-22 71 views
1

我爲我公司的插件自動運行測試用例。使用VBA自動單擊消息框

在其中一個測試用例中,當我嘗試關閉工作簿時,在我的本地機器上保存我的工作簿後,我需要點擊'是' - 將編輯的數據保存在我們的數據庫中,'否' - 丟棄編輯或'取消'只需關閉消息框。

我嘗試過使用sendKeys,但那不適合我。

如:對於點擊「否」通過我的VBA代碼,我試圖發送選項卡並輸入鍵是這樣的:

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

我曾嘗試與不同的時間值仍然沒有得到任何成功。如果有人能幫助我,我會很高興。

提前致謝! :)

UPDATE:截至目前,我一直在做這樣的:

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

但是,有沒有什麼辦法讓消息框窗口對象的引用?或者無論如何要堅持工作流程:編輯工作簿 - >保存 - >嘗試關閉 - >選擇丟棄/提交對數據庫的更改?

注意:通過丟棄/提交對數據庫的更改,我的意思是數據更新的服務器。 Excel只是用戶的一個界面。我不希望只保存excel,而是在服務器上調用丟棄/保存更改的操作以及...

+3

你嘗試過'Application.DisplayAlerts = False嗎?請參閱[Application.DisplayAlerts](https://msdn.microsoft.com/en-us/library/office/ff839782.aspx) – Jeeped

+0

如果您決定使用sendkeys執行此操作,則會替換「{ENTER}」用空格鍵命令「」。回車並不總是觸發按鈕點擊。空格鍵呢。但Jeeped的答案是最常用的答案。我從來沒有嘗試賈維斯的方式,但假設它的工作,這也是一個有效的答案。兩者都是一樣的,賈維斯只需要更少的代碼。 – DDuffy

+0

Hi @Jeeped,是的,我試過了,實際上,不是關閉然後從彈出窗口中選擇,而是調用從這些選項觸發的函數,然後關閉我的工作簿。但我很想知道是否有辦法自動點擊/自動選擇彈出窗口。 – Rishi

回答

4

如果您已保存工作簿,則只需關閉工作簿。請嘗試下面的代碼

Activeworkbook.close false 

這將關閉您的工作簿,並且您不會被要求選擇任何選項。

+0

嗨@jarvis,它不僅是關閉工作簿,還選擇放棄更改/提交更改(通過單擊否/是)。有沒有辦法堅持這個工作流程:編輯工作簿 - >保存 - >嘗試關閉 - >放棄/提交數據庫中的更改?截至目前,這是我正在做的編輯工作簿 - >保存 - >放棄/提交更改 - >關閉。 – Rishi

+0

通過丟棄/提交對數據庫的更改,我的意思是數據更新的服務器。 Excel只是用戶的一個界面。我不想只保存excel,而是在服務器上調用丟棄/保存更改的操作... – Rishi