ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11559|回复: 40

[原创] SuperDotNetAPI库:重磅解决VBA多个痛点--多音字转拼音、GZIP、数学公式计算、离线OCR

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2019-3-30 21:42 | 显示全部楼层 |阅读模式
本帖最后由 liucqa 于 2019-8-29 13:14 编辑

这两年,我在VBA应用方面一直有几大痛点:
1、多音字转拼音;
2、64位下的GZIP解压缩;
3、数学公式计算;
4、离线中文OCR识别(见二楼)。

为了解决这几个个长期困扰我的问题,以及未来经常会遇到的其它问题(例如AES加解密、验证码图片处理、文本编解码、大数的数学运算、多线程等等),我考虑在VBA中调用C#的dll来彻底解决。

正常情况下,vba调用C#的dll要通过com方式先注册后运行,这在很多场合是不方便的,因此我采用给C# dll加上导出函数的方式,使C#的dll能够被其它语言以API方式直接调用,要做到这一点,需要对托管代码的DLL做一些特殊的处理,以确保提供导出函数接口签名给第三方调用。

下面的附件演示了多音字转拼音(自带六十多万词库,无需微软拼音)和GZIP解压缩、数学公式计算。
本DLL库可以被C++、VB6、Delphi、VBA等多种语言调用(接口提供VBA示例,其它语言自己写。)。支持32位和64位操作系统。
运行环境:需要.net Framework 4.0或以上,支持XP。

在Win10系统下测试通过。

SuperDotNetAPI_v1.13.part01.rar (1.5 MB, 下载次数: 407)
SuperDotNetAPI_v1.13.part02.rar (1.5 MB, 下载次数: 402) SuperDotNetAPI_v1.13.part03.rar (1.03 MB, 下载次数: 505)
运行结果如下:
GZIP压缩和解压缩
2.jpg

多音字转拼音(本程序支持的多音字由词库决定,如果有需求可以自己建立词库),代码来自网上某源码
1.jpg

数学公式计算 (2019.5.9 更新1.12版,增加浮点数设置参数)
1.jpg

欢迎技术交流,如果大家有什么VBA无法完成的其它功能需求可以在本贴留言。

其它功能陆续开发中,未完待续...








评分

12

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-30 21:42 | 显示全部楼层
本帖最后由 liucqa 于 2019-4-17 22:21 编辑

使用OneNote2013 sp1实现OCR识别本地图片

OneNote_OCR_API-2013版.rar (585.56 KB, 下载次数: 589)


OCR结果测试:
r.jpg


说明:

6.jpg




TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-30 21:43 | 显示全部楼层
本帖最后由 liucqa 于 2019-5-21 13:37 编辑

在网页采集中,很多时候需要运行网站下载的某个js文件中的函数,以计算Request参数。VBA直接运行JS函数有很多办法,常见的是通过msscriptcontrol.scriptcontrol或者htmlfile。
在这里,我提供另外一种比较灵活可控的方式来运行js函数。
C#可以调用很多js引擎来执行js代码,比较流行的有Jurassic,Jint ,  Nlua, ClearScript,IronJS,IKVM.NET等很多引擎。如果VBA可以通过C#调用这些引擎,那么我们就可以灵活的运行js函数了。
考虑il本身支持export导出函数接口,所以我做了一个C# dll(无需注册,直接调用运行),可以以API方式运行其中的函数来执行指定的js函数,并取回结果。
下面提供了一个VBA的调用示例,其它原生语言也可以参考VBA示例来调用这个dll。

JSDotNetAPI.rar (599.07 KB, 下载次数: 260)

运行环境:.NET Framework 4.5.2或更高。
在Windows10 64位和32位下测试通过。

函数声明:
2.jpg

VBA示例运行结果(参数调用有两个例子,一个是字符串方式,一个是Variant方式)
1.jpg

******************************
有问题可以随时联系我

TA的精华主题

TA的得分主题

发表于 2019-3-30 21:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-3-30 21:54 | 显示全部楼层
本帖最后由 zorsite 于 2019-3-30 21:58 编辑

请教高手,函数怎么调用?我看着有四个参数,但是后三个参数不知道怎么输入?自己建立词库是在哪里建立?

TA的精华主题

TA的得分主题

发表于 2019-3-31 06:23 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
此我采用给C# dll加上导出函数的方式
求科普,咋导出c标准函数

TA的精华主题

TA的得分主题

发表于 2019-4-10 11:49 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-4-10 17:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 fxl447098457 于 2019-4-11 06:03 编辑

弄明白了,谢谢分享。。

TA的精华主题

TA的得分主题

发表于 2019-4-14 13:39 | 显示全部楼层
谢谢分享!
之前GZIP解压缩用winrar,效率上差了点。
另外这个dll有点大,能不能把两个功能分开成2个dll?

TA的精华主题

TA的得分主题

发表于 2019-4-16 18:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 loquat 于 2019-4-16 18:29 编辑

微软拼音的词库可以提取出来啊
我讲个笑话,有个接单的人说的:客户总是找我开发程序,因为他说别人写的程序都太打了,动不动几十M,而我的才几百K
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 17:28 , Processed in 0.054828 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表