http://www.cnblogs.com/Charltsing/p/JSDotNetAPI.html
在网页采集中,很多时候需要运行网站下载的某个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。
运行环境:.NET Framework 4.5.2或更高。
在Windows10 64位和32位下测试通过。(如果电脑速度慢,第一次运行可能需要一点时间来启动jit)
函数声明:
VBA示例运行结果(参数调用有两个例子,一个是字符串方式,一个是Variant方式)
联系QQ:564955427
如果有什么问题可以随时联系我。
转载于:https://www.cnblogs.com/Charltsing/p/JSDotNetAPI.html
http://www.cnblogs.com/Charltsing/p/JSDotNetAPI.html在网页采集中,很多时候需要运行网站下载的某个js文件中的函数,以计算Request参数。VBA直接运行JS函数有很多办法,常见的是通过msscriptcontrol.scriptcontrol或者htmlfile。在这里,我提供另外一种比较灵活可控的方式来运行js函数。C#可以调用很...
STEP1查看是否有Java环境# java --version没有Java的话请先安装# yum install java2. 查看java安装路径# ls -lrt /etc/alternatives/java 3. 修改java配置文件# vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.5.10-0.e...
4、离线中文OCR识别(见excelhome)。
为了解决这几个个长期困扰我的问题,以及未来经常会遇到的其它问题(例如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。
本附件用excel自带的
VBA
,
调用
windows
API
用 mouse_event 实现了对前台程序发送按键和鼠标动作
用 sendmessege 实现了对后台程序发送鼠标动作
做法是 先人手打开画图程序,切换回excel点击按钮
就可以在画图程序画出一个正方形图案
对想要学习 如何 sendmessage 到后台程序的同学很有帮助。
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wparam As Long, ByVal lparam As Long) As Long
Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
2. 在公式中
调用
函数
你还可以在 Excel 的单元格公式中
调用
自定义
函数
。例如,假设你想在单元格 A1 中
调用
MyFunction
函数
,你可以在 A1 中输入以下公式:
=MyFunction()
注意,在公式中
调用
函数
时,不需要加括号。
无论是在代码中还是在公式中
调用
函数
,都要确保
函数
已经在
VBA
模块中定义。例如,下面是一个简单的无参自定义
函数
的示例:
Function MyFunction() As String
MyFunction = "Hello, World!"
End Function