为什么同样的算法,office vba与wps vba会有差距?

您所在的位置:网站首页 office与word的区别 为什么同样的算法,office vba与wps vba会有差距?

为什么同样的算法,office vba与wps vba会有差距?

2023-08-10 11:14| 来源: 网络整理| 查看: 265

虽然WPS里面的实现机制我不是非常清楚。但因为之前与WPS合作开发过一些WPS助手 及超级模板,对WPS有过一段时间的研究。

分析两者有差异的原因主要是如下几点:

一、WPS使用的VBA是微软授权的,但接口的底层具体实现是不同的。

WPS使用的VBA是微软授权的,使用的也是微软的VBA,但接口的具体实现是不同的。

VBA不是WPS的产品,是微软的产品,WPS使用它是经过微软授权的。这个授权一是需要支付不菲的费用,二是授权是有时间限制的。听说将来微软有可能不再给WPS授权,所以WPS为什么要开发JS宏也就是这个原因,当然JS宏也是考虑将来要跨平台,而且JS的相关资源库更多。而VBA语法和功能一直没有更新。

那既然都是微软的VBA,那为什么速度会有不同呢?甚至WPS还更快呢?

1、VBA只是提供给用户的一个接口,但这个接口内部的实现则是Office或WPS自己程序去实现

如用户使用VBA调用一个接口 如Range(“A1:B5”).select ,在WPS和Office的VBA都是相同的调用方法,但这个接口底层的具体实现,与VBA无关,是WPS和Office底层分别去实现的,WPS与微软的MSO是完全不同的,两者实现的代码和逻辑可能是不同的,这也是两者速度有区别的主要原因。

有可能某个接口的实现过程,WPS的程序代码更优化一些,所以速度更快一些。

2、还有一种可能,即Office有可能有些接口要考虑Office不同版本的兼容性

即便使用最新的方法可能速度更快,但考虑用户调用时使用的Office版本相对较低,所以Office可能使用了旧的程序来实现这个接口,导致速度更慢一些。

总结:就是WPS与Office虽然很多界面功能是一样,但底层实现的机制也可能有很大的区别,这些区别会导致执行速度上有所不同。

二、WPS上本质上只有32位,而Office 有32位和64位之分

对于您说的第二个问题:

如果是用wps则根本不需要考虑这么多,在wps下甚至不需要强制要求声明PtrSafe,即使你声明了也能正常运行。而到了office真的是太麻烦了。

这个是因为WPS上本质上只有32位,没有64位,而Office 有32位和64位之分。而64位要调用API或第三方DLL,就必须强制要求声明PtrSafe,而WPS只有32位,所以就不需要加上ptrSafe, 这个不是因为WPS兼容性更好,而是因为它本身就只有32位,32位就不需要加以区分,表现出来就是WPS调用API更简单,更易用。

Windows 64位系统下可以运行32位的应用程序,但理论上 64位程序因为可以使用更大的寻址空间,使用更大的内存,理论上运行速度会更快一些。但用户多数的使用并没有非常复杂的大量运算,所以很多用户对32位与64位的速度之差,并不敏感。

那WPS为什么不开发64位呢,可能是出于成本和开发量的考虑,要再开发一个64位WPS,需要改动的代码及需要适配的地方非常多,而且还需要做大量的测试工作,还要考虑第三方应用及插件的兼容等等问题,所以是一个工作量非常大的工作,而且牵一发而动全身。所以WPS迟迟也没有发布64位。

三、WPS的VBA 与Office VBA具体使用上还是有细微区别

因为WPS的VBA是尽量去兼容Office, 所以理论上讲肯定是兼容性不如Office的,因为是你去适配别人,Office可以任意妄为,但WPS必须要小心翼翼跟随。

WPS的VBA应该是90% 兼容了Office VBA,但也有些地方无法完全兼容,还有些使用方法略有差异

1.wps支持office vba大部分接口,但有部分接口不支持2.wps使用过程中,或有时出错后,alt+F11键快捷键就失效了,无法进入VBE界面3.wps暂不支持多表来源的透视表,所有透视表有关多表操作相关的VBA代码不支持4.wps也支持超级表,但它的超级表有一个小缺点:不支持 新增行自动复制上一行的格式与公式5.office中单元格居中的xlCenter 参数 在WPS ET中单元格居中是etHAlignCenter,而非xlCenter 6.office api 支持相对路径,而wps不支持(tmtony源创),如Private Declare Function test2Lib "test.dll" Alias "test2"这个test.dll在office会自动搜索当前相对路径,而在wps中必须要指定绝对路径,使用相对路径均不行(dll放在文件相同目录 ,在excel可以,但在wps中不行)7.wps相对office缺少 access数据库组库,缺少outlook 组件,但多了 脑图组件8、如透视表与Office就有较大区别,所以有些在Office操作透视表的相关VBA代码在WPS可能就会出错 (因为wps不支持多表透视)9、WPS的VBA开发中,发现WPS的VBA接口中有一些功能并未完全实现 (之前发布过在Office交流网)activesheet.chartobjects(1).chart.export activeworkbook.Path & "\test3.gif","gif" gif在office支持,但wps不支持。 PNG JPG均支持

但Wps也有一些微软不支持的功能,如嵌入式图片

wps可以通过 插入嵌入式图片:WPS嵌入式图片 是=DISPIMG("图片18") 这样的格式,这是wps独有的功能,而Excel却不支持

但Excel可以用间接的方法来实现

1)先用代码选中这个shape

2) Selection.Formula = "=图片3"

就可以了,两者各有优缺点

WPS优点1.更多在线模板2.更多在线资源 字体 图片 素材3.包含了脑图 与 秀堂 以及 一些官方插件 助手,如工资条助手 人力资源管理助手等4.与金山云结合,速度要快过onedrive

四、Office会新增一些新的函数,WPS也会增加一些新的功能

如Xlookup函数,微软增加了,然后WPS也实现了。

如嵌入式图片,WPS增加了,但Office还没有这个功能。

有哪些Office的功能是WPS不支持的可以参考这篇:

微软Office有哪些功能是WPS没有的?

而WPS又有哪些功能是Office不具备的可以参考这篇:

小辣椒高效Office:金山WPS相对微软Office的优点 (含思维导图)

五、WPS相关免费技巧及视频教程

我是专注Office与WPS办公软件 及VBA 的 @小辣椒高效Office 可关注我。

如果觉得有用,就请帮忙点个赞,或收藏



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3