Autoit不​​会发送Enter以关闭Excel文件

时间:2015-10-09 15:23:07

标签: excel-vba autoit vba excel

enter image description here我有一个自动脚本可以打开excel工作簿,修改它,保存为csv并退出,但我无法退出。它在关闭之前锁定了最后一次保存确认屏幕,我添加了它停止工作的窗口的照片。这是我的剧本。

    [![#include <Excel.au3>
#include <MsgBoxConstants.au3>

; Create application object
Local $oAppl = _Excel_Open()
If @error Then Exit MsgBox(16, "Excel UDF: _Excel_BookOpen Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

; *****************************************************************************
; Open an existing workbook and return its object identifier.
; *****************************************************************************
Local $sWorkbook = @ScriptDir & "\Abacus List.xlsx"
Local $oWorkbook = _Excel_BookOpen($oAppl, $sWorkbook, Default, Default, True)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookOpen Example 1", "Error opening '" & $sWorkbook & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

Sleep(2000)
Sleep(2000)
Sleep(2000)
Send("{ENTER}")
Send("{ALTDOWN}{F11}{ALTUP}")
Send("{ALTDOWN}{I}{ALTUP}")
Send("{M}")
Sleep(2000)
Send("Sub sbVBS_To_delete_firstFewRows_in_Excel() {ENTER} Rows(1).EntireRow.Delete {ENTER} Rows(1).EntireRow.Delete {ENTER} Rows(1).EntireRow.Delete {ENTER} Rows(1).EntireRow.Delete {ENTER} Rows(1).EntireRow.Delete {ENTER} Columns(\[1\]).EntireColumn.Delete {ENTER} Columns(\[1\]).EntireColumn.Delete")
Send ("{F5}")
Sleep(2000)
Sleep(2000)
Sleep(2000)
Sleep(2000)
Send ("{ALTDOWN}{F4}{ALTUP}")
Sleep(2000)
Sleep(2000)
Sleep(2000)
Send("{F12}")
Sleep(2000)
Sleep(2000)
Sleep(2000)
Sleep(2000)
Send("{TAB}c{ENTER}")
Sleep(2000)
Sleep(2000)
Send("{TAB}{ENTER}")
Sleep(2000)
Sleep(2000)
Send("{ENTER}")
Sleep(2000)
Sleep(2000)
Sleep(2000)
_Excel_BookClose($oWorkbook, False)
Send("{TAB}{ENTER}")
Sleep(2000)
Sleep(2000)
Send ("{ALTDOWN}{F4}{ALTUP}")][1]][1]

2 个答案:

答案 0 :(得分:0)

如果你真的用完了选项,那么只需点击该位置即可。

警告:例如,当您更改屏幕重新分配时,这可以解决许多错误和错误。

您可以使用“AutoIt Window Info”检测按钮的位置,然后单击:

MouseClick("left", $pos1, $pos2)

这是一个非常便宜的解决方案,但如果它有效,它就可以了! ; d

答案 1 :(得分:0)

尝试ControlClickControlSend。使用AutoIt Info Tool获取消息框的句柄。