Vba 自动热键-拦截目标窗口关闭命令?

Vba 自动热键-拦截目标窗口关闭命令?,vba,excel,com,autohotkey,Vba,Excel,Com,Autohotkey,我希望Autohotkey监视Excel 2010窗口中的Close命令,截取并取消该命令,运行脚本,然后最终关闭该窗口 我知道OnClose和BeforeClose是vba中的现有命令,但我不能使用.xlsm(启用宏)工作表,而且这至少在5个不同的工作站上,因此Personal.xlsb也不是一个选项 我发现有几篇参考文献说vba“很容易”翻译成COM,我只是在学习如何使用它,但是我已经用键盘敲了一个星期了,我想不出任何语法来监视窗口中的“关闭”命令 我最近在想,关于Message,但我也不能

我希望Autohotkey监视Excel 2010窗口中的Close命令,截取并取消该命令,运行脚本,然后最终关闭该窗口

我知道OnClose和BeforeClose是vba中的现有命令,但我不能使用.xlsm(启用宏)工作表,而且这至少在5个不同的工作站上,因此Personal.xlsb也不是一个选项

我发现有几篇参考文献说vba“很容易”翻译成COM,我只是在学习如何使用它,但是我已经用键盘敲了一个星期了,我想不出任何语法来监视窗口中的“关闭”命令


我最近在想,关于Message,但我也不能想出它的语法,而且Google也没用,我甚至找不到其他人问这个问题!请帮忙

我在ahkscript.org论坛上发布了两个有用的例子

这是两种方法中比较简单的一种

oExcel := ComObjActive("Excel.Application")
oWorkbook := oExcel.ActiveWorkbook
ComObjConnect(oWorkbook, Workbook_Events)
return

class Workbook_Events
{
    BeforeClose(Cancel)
    {
        msgbox % "closing"
    }
}

希望能有所帮助

近距离运行的脚本的性质是什么?是不是在文件关闭后可以在文件上运行?我还在工作,但我会尽快测试它!非常感谢你!精彩的!我不得不玩它只是一点点,但它正是我想要的!啊!我不太明白如何发布以行分隔的代码,但基本上是在开头添加了
#Persistent
,并在函数中添加了
ExitApp
,它工作得非常好!现在我只需要修改我自己的代码,然后在那里按喇叭…非常感谢!!