用途
主要是一些需要自动化录入数据或者批量修改表格属性的场景吧,我个人的需求更多是根据一些外部源来输入数据到表格,当然读取表格的数据做进一步处理也是有的
为什么不用自带的vba甚至py
vba在快捷键管理这方面和ahk比不了,py也一样的,快捷键管理上ahk当然是更加方便的选择,这类需求本身都不会很复杂,弄个方便的快捷键当然是更加重要的
本文讨论的问题
主要就是这个过程中的权限问题,基础的使用上想必不用多说,具体使用的问题也和本文无关
正文
最简单的一个测试脚本com对象读取表格数据的例子
if !(A_IsAdmin || InStr(DllCall("GetCommandLine", "str"), ".exe"" /r"))
RunWait % "*RunAs " (s:=A_IsCompiled ? "" : A_AhkPath " /r ") """" A_ScriptFullPath """" (s ? "" : " /r")
xl:=ComObjActive("excel.Application")
te:=xl.cells(1,1).value
msgbox,% te
这个例子无论在wps或是excel中使用,都会有异常报错的问题
比如
Error: 0x800401E3 - 操作无法使用
原因
上面那段提权代码的问题,这样使用以后脚本是管理员权限运行,而正常情况下打开的表格是非管理员,问题就出现了
解决方案
- 没有特殊需求的情况下可以不用提权代码的,一般来说我个人注意到需要使用的是win按键映射之类的情况,当然这个按需求使用而不是一股脑全使用更加靠谱
- 管理员权限的打开表格,这个不太推荐,需要人工来操作有点背离了自动化的初衷了,当然也可以脚本来管理员启动就是了