是否有一种方法可以使用自动热键关闭特定Excel文件的窗口?

是否有一种方法可以使用自动热键关闭特定Excel文件的窗口?,excel,automation,autohotkey,Excel,Automation,Autohotkey,我想用AHK脚本关闭名为“状态”的Excel文件窗口。 我尝试了以下代码,但最终关闭了整个Excel应用程序。(所有打开的Excel文件都将关闭) 我只需要关闭标题为“status”的Excel文件。问题在于它是一个Excel实例,打开了多个文档WinClose类似于alt+F4,您需要的是ctrl+F4。。。那我们就这么做吧 f1:: If WinExist( "Status - Excel" ) { WinActivate , Status - Excel WinWaitAc

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


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

问题在于它是一个Excel实例,打开了多个文档<代码>WinClose类似于alt+F4,您需要的是ctrl+F4。。。那我们就这么做吧

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

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

DetectHiddenWindows, On
DetectHiddenText, On
xlFileName:= "Status - Excel"
CloseXlFile(xlFileName)
ExitApp
请注意,这里您使用的工作簿名称“Status-Excel”是文件名的未保存版本。如果您保存文件但不编辑任何内容,则文件名可能为“Status-Saved”,因此程序可能无法运行。为了避免这种情况,您可以使用AHK功能

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


为什么您必须在AHK中执行此操作,而不是使用Excel自动化?
DetectHiddenWindows, On
DetectHiddenText, On
xlFileName:= "Status - Excel"
CloseXlFile(xlFileName)
ExitApp
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
}}