VBA的确是个很不错的编程工具,寄生在OFFICE内,无需安装庞大的开发环境,即开即用,方便灵活,能实现的事情也很多,但毕竟VBA是微软停止更新维护将近20年的一种语言,计算机的世界发展速度有多快大家有目睹,今天抛砖引玉,拿几个加密类函数来讲说一下VSTO较VBA开发的一些优势所在。 题外话本人也是从Excel的VBA语言入门了编程世界的,然后很偶然的机会接触到VSTO,并且在一位热心的网友一路的帮助下,算是入门了C#语言,现在可以灵活地用C#实现自己想要的一些小功能(大部分是抄百度和google),然后可以在开源世界里找各式各样的类库轮子搬到自己的项目中来。 VBA要实现利用外界的资源这点,估计比较难,一般其他软件厂商只提供主流的编程语言的API接口或SDK。就算微软自己的.Net Framework类库集,也只能在.Net语言中使用,而不能供VBA所使用。 例如今天介绍的几个加密函数,在.Net Framework类库里,直接有现成的代码,几乎可以直接调用的程度,对于一些非OFFICE环境内的功能实现来说,使用VSTO开发或C#、VB.Net开发,开发效率还是有很大的提升。 一般像我这种水平的人,只需要不断地百度或google,就可以拿到现成的东西直接复用,VBA毕竟是业务开发者使用的编程语言,同时又是一个官方停止更新语言,仍然使用VBA做一些复杂的需求,有点吃力不讨好。 回到正题,加密函数介绍今天介绍的加密函数有 生成MD5和RSA方式的加解密函数,具体这些加密原理我也不懂,我只负责搬运和它能够实现到所需的功能即可。
加解密函数
函数示例如下:因是给VBA开发者用,不多解释,大家都会百度。
在VBA代码中调用加解密函数方法说到重点,VBA开发者可能更多场景还要回到自己在VBA代码中想要调用其他语言开发好的函数,例如此篇的自定义函数。 调用方法为:使用Application.Run方法
VBE代码编写
得到的结果一样
能够使用Application.Run来调用的前提是自定义函数的加载项已经被加载,即xll文件已经被Excel加载进来。如果使用代码来加载xll,也不复杂,使用AddIns.Add 方法,如下图所示
总结在我过往发表的众多自定义函数里,大部分直接照搬了.Net Framework类库里的函数,让其能够在Excel环境以自定义函数的形式来使用,当中也收到许多反馈说能用自定义函数的人都自己写VBA代码,不会写代码的人也没必要用自定义函数,文件分发出问题等等如此这般的回复。反正个人觉得挺可惜的,人的见识不广时,依仗自己有限的知识体系,来给自己盖一个绝对性的结论,以至很多时候还在低效地运行着。 写此篇文章没有贬低VBA的作用,只是当有更好的东西时,花一点点学习成本去了解它,然后唯我所用,何尝不是一件美好的事情。
|