【问题标题】:Autoit won't send Enter to close Excel fileAutoit 不会发送 Enter 来关闭 Excel 文件
【发布时间】:2015-10-09 15:23:07
【问题描述】:

我有一个 autoit 脚本,可以打开一个 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]

【问题讨论】:

  • 你为什么不直接Send("!s") 发送 ALT + S 来按下保存按钮?在这里查看更多示例:autoitscript.com/autoit3/docs/appendix/SendKeys.htm
  • 我试过了,以及其他选项,好像 autoit 不能或不会向那个窗口发送任何东西,我不知道为什么。

标签: excel autoit vba


【解决方案1】:

如果您真的用尽了选项,只需点击该位置即可。

警告:这可能会导致很多错误和错误,例如当您更改屏幕分辨率时。

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      相关资源
      最近更新 更多