|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
我一定要吐槽一下,这个加载顺序对开发影响还挺大的,具体描述如下:
首先,描述一下需求:如果你有一个word的VBA插件,其中正好用RibbonX写了功能区,而且正好里面还有Onload和各种Tab的getVisible回调,而在getVisible的回调显示上,还的判断双击打开的这个文件是不是有外部链接,以显示不同的功能。
然后再说下OFFICE2016和OFFICE365的WORD插件加载顺序:对于OFFICE2016的word插件,加载时间是在双击打开word之后(即双击打开文件时,待文件打开完成之后进行加载);而对于OFFICE365,插件加载时间是在双击文件打开之前(即双击之后,首先加载插件,然后在打开双击的文件)。
问题:那么就存在这么一个问题,对于OFFICE2016来说,因为加载插件时文件已经打开了,因此可以直接在getVisible的回调中使用set doc=thisdocument或set doc=activedocument,因为加载是已经可以获取到这两个对象;而对于OFFICE365,因为加载时文件还没打开,根本就不能使用set doc=thisdocument或set doc=activedocument。最为可气的是,就算获取不到thisdocument 和activedocument我也不怪你,那你给我个nothing也好啊,至少我还能拿来判断啊,但是OFFICE365不,而是遇到这两个命令强制报错,而且这个报错弹框你还根本规避不了。也就是说,就算你用on error resume next和Application.DisplayAlerts = wdAlertsNone都没办法避免,傲娇的OFFICE365一定会给你弹出错误的提示框。
坛里的大牛有没有遇到过类似的问题,又是怎么解决的啊,求方法。
|
|