【问题标题】:Is there a way to close the window of specific Excel file using AutoHotkey?有没有办法使用 AutoHotkey 关闭特定 Excel 文件的窗口?
【发布时间】:2020-03-28 19:35:56
【问题描述】:

我想用 AHK 脚本关闭标题为“状态”的 Excel 文件的窗口。 我尝试使用以下代码,但最终关闭了整个 Excel 应用程序。 (所有打开的 Excel 文件都将关闭)。

IfWinExist ("Status - Excel")
   {
       WinClose
       WinWaitClose
   }

我只需要关闭标题为“状态”的 Excel 文件。

【问题讨论】:

  • 为什么必须在 AHK 中执行此操作而不是使用 Excel 自动化?

标签: excel automation autohotkey


【解决方案1】:

问题在于它是一个打开多个文档的 Excel 实例。 WinClose 类似于 alt+F4 当你需要的是 ctrl+F4... 所以让我们就这样做吧。

f1::
If WinExist( "Status - Excel" )
{
    WinActivate , Status - Excel
    WinWaitActive , Status - Excel
    Send , ^{f4}
}
Return

【讨论】:

    【解决方案2】:

    您可以尝试调用以下函数,将您的工作簿名称作为函数参数传递,如下所示

    DetectHiddenWindows, On
    DetectHiddenText, On
    xlFileName:= "Status - Excel"
    CloseXlFile(xlFileName)
    ExitApp
    

    请注意,这里您使用的是工作簿名称“状态 - Excel”,它是文件名的未保存版本。如果您保存文件但不编辑任何内容,则文件名可能是“状态 - 已保存”,因此程序可能无法运行。为了避免你可以使用 AHK 功能

    "SetTitleMatchMode, 2" ;这允许您使用部分名称而不是全名,您可以将文件名设置为 xlFileName:= "Status" 只需在 DetectHiddenText 之后添加 SetTitleMatchMode, 2, On

    CloseXlFile(myfile) {
        WinMinimizeAll
    if WinExist(myfile) {
        WinActivate
        try
            obj := ComObjActive("Excel.Application")
        catch {
            Sleep, 2000
            obj := ComObjActive("Excel.Application")
        }
        book:= obj.ActiveWorkbook
        book.save
        Sleep, 3000
        Book.close(-51)
        Sleep, 2000
    }
    else {
        return
    }}
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多