再说说com对象控制excel的事

其实之前还是没搞懂一些vba的方法,拿到ahk怎么用,今晚突然打通了任督二脉,一些想法发在社区里和老哥们讨论一些.

首先为什么vba的代码改成com对象的ahk代码让我觉得很恶心.

总结了一下,就是vba代码很多是宏录制的,然后vba还支持很多的写法,导致经常看到的代码都奇形怪状的不统一,尤其是move,copy这几个,网上的搜的写法各不相同

这里个人研究了很长一段时间后有一个总结,vba的代码调用方法的时候就是一个空格,然后写参数的名字然后:=参数的值,这样的写法,这里一定要分清参数的名字和参数的值,拿到ahk的只是参数的值,那个参数的名字其实不用管,拿到ahk里面也没用,因为ahk不支持这种传参的方法.

ahk支持的传参方法是一个括号,然后里面根据参数的位置依次写就行了,比如move方法,第一个参数是before第二个是after在vba里面就是写before:=xxxx就可以了,但是这种拿到ahk里面永远都没法运行成功的.在ahk里面得这么写

oe.Sheets("sheet1").Move(,oe.sheets("Sheet9"))
因为他是第二个参数after,所以在ahk里面得,一下然后输入参数的值
 
然后还有另一种传参的方法,比如end,他只有一个参数,然后发现从vba搞得这个参数的值比如xlup拿到ahk里面没法用,这个测试了一下得用数字来传参,比如这个end,应该有8个可以传的数字,自己挨个试试也可以试出来,因为微乳的帮助里面也没说第几个对应上下左右,这个就比较尴尬了,多试几次.
 
总结一下,vba的语法混乱,恶心,除了临时用用还行,自动化还得靠ahk控制com对象,但是感觉ahk这方面的介绍也不多,然后大部分文章还默认读者很懂这方面,感觉自己琢磨的时候踩了很多坑,感谢僵尸大佬的帮助.
我个人感觉还是得多看看微软的帮助思考一下,然后也可以参考一下py的xlwings库的写法,虽然py支持参数名字的传参方法,不过很多东西还是可以拿来借鉴一下的.

给TA捐赠
共{{data.count}}人
人已捐赠
其他

音量控制——win 桌面美化

2022-3-5 18:02:20

其他

音量更改指定程序的音量

2022-3-8 1:17:00

5 条回复 A文章作者 M管理员
  1. AHK中文社区

    ?总结写的很好,期待你的库,老外有个函数库你可以参考补充完善

    • 而今迈步从头越

      感谢老哥鼓励,我搜搜看是什么库?不过水平有限,感觉现在只是达到了可以把认识的vba代码改写成用ahk的程度而已

  2. tornee

    机器上的office家庭版,一直找不到Excel.Application,用不了

  3. samluna

    你改成这个oe.Sheets(“sheet1”).Move(ComObjMissing(),oe.sheets(“Sheet9”)) 试试.

个人中心
购物车
优惠劵
有新私信 私信列表
搜索