玩转idMSO
- 目录
- 痛点需求
- 技术原理
- Excel热键定义示范
- Outlook热键定义示范
- 如何运行以上脚本
- 如何定义热键
- 其他扩展
目录
痛点需求
你有没有发现用鼠标在菜单项中寻找某个比较深的菜单项很烦,尤其是还要重复干这件事儿,是否能自己给这个深深的菜单项定义热键呢?比如下面这个功能,我想定义为Ctrl + Shift + C,这里只是举例你可以自己定义为任意想要的热键定义,只要不冲突,也可以定义成一个按键,本文最后面有AHK帮助文档,请自行学习。
再比如在Outlook中我常用的一个打标记功能,我想定义为热键Win+T
技术原理
微软的Office的Ribbon界面都支持一种叫idMso的标识,可以用来调用某个菜单项功能。具体idMso的值可以去MSDN查阅学习,这也是本文的目的,这个技术貌似网上还没谁教学推广。吐槽下 MSDN 这个资料并不好找。
还有些chm帮助文档提供idMso查阅,比如通过查阅OfficeidMsoViewer,得知上面的复制为图片的功能对应的idMso 为CopyAsPicture
在度娘的帮助下,找到一个日本网站
Office 加载项(以前称为 Office 应用程序)和功能区的完整自定义信息列表
其中页面的 上部分是字面索引,下部分是图标对应的idMSO表格。截图示范如下:
以上是网站上F开头的部分Outlook的idMSO截图。
Excel热键定义示范
在Excel中定义热键:Ctrl + Shift + C来复制某个范围为图片
^+c::
ox:=ComObjActive("Excel.Application")
ox.Application.CommandBars.ExecuteMso("CopyAsPicture")
ObjRelease(ox)
return
Outlook热键定义示范
在Outlook中定义热键:Win + T来为某个邮件打上须今日处理的小旗子
#t::
ox:=ComObjActive("Outlook.Application")
ox.Application.ActiveWindow().CommandBars.ExecuteMso("FlagToday")
ObjRelease(ox)
return
如何运行以上脚本
- 下载AutoHotkey
- 将上面脚本写到一个扩展名为.ahk的文本文件中。
- 双击这个ahk文件运行即可。
如何定义热键
符号 | 按键 |
# | Win |
^ | Ctrl |
+ | Shift |
! | Alt |
其他扩展
2018年写过一篇了 [AHK]给Outlook的工具条上的功能单独设置快捷键,其中的方案二 没展开写,也可以试试。可能更通用。