为什么用 AutoHotkey 而不是 VBA 来操作 Excel
-
生效范围
- VBA 作用范围当前文件,其他文件要用同功能 VBA,要重新复制代码部署
- ☑ AutoHotkey 运行后,对任何 Excel 文件都可直接使用
-
语法
- VBA 语法陈旧,加上不熟悉,写起来很不友好
- ☑ AutoHotkey 语法简单,写起来很方便
-
代码管理
- ☑ VBA 可以内置到 Excel 文件,对处理单文件功能来说,比较方便。文件多了,每个都要维护VBA代码,就很不方便了
- AutoHotkey 需要单独运行程序,但代码可以统一维护,文件数多就更有优势了。
-
执行功能
- VBA 可以点击控件或简易热键执行
- AutoHotkey 可以用自定义热键(自定义)或鼠标手势执行
附上 AutoHotkey v2-beta 获取 xl 对象的函数
ox(winTitle:="ahk_class XLMAIN") {
if WinExist(winTitle)
ctlID := ControlGetHwnd("EXCEL71")
else
return ComObject("Excel.application")
numput('Int64',0x20400, 'Int64',0x46000000000000C0, IID_IDispatch:=buffer(16))
dllcall("oleacc\AccessibleObjectFromWindow", "ptr",ctlID, "uint",0xFFFFFFF0, "ptr",IID_IDispatch, "ptr*",win:=ComValue(9,0), 'HRESULT')
loop {
try
return win.application
catch
ControlSend("{escape}", "EXCEL71")
}
}