网站首页 > 技术文章 正文
aardio 很小,下载就可以使用,没有任何复杂步骤。
aardio 与 Excel VBA (兼容 WPS JSA )可以相互调用函数,不需要任何复杂的封装。
3 分钟够用,下面开始:
一、aardio 调用 VBA 函数
直接看 aardio 代码:
import com.excel;
//打开 Excel 宏文件 。
var xl = com.excel("/vba.xlsm");
//自由调用任意 VBA 函数。
var data = xl.vba.GetSheetData();
上面的 GetSheetData 可以换为任意 VBA 函数名,可以传参数,获取返回值。
用 Excel 打开 xlsm 文件,按 Alt + F11 就可以打开 VBA 编辑器,插入一个新模块就可以写 VBA 函数了。
aardio 自带示例可以找到 vba.xlsm,路径:
范例 / 调用其他语言 / VBA / vba.xlsm
二、VBA 调用 aardio 函数
VBA 里也可以方便地调用 aardio 对象或函数。
先看 VBA 代码:
Public Sub CallAnyting(ByVal aardioObject As Object)
aardioObject.Log ("这是来自 VBA 的参数。")
End Sub
再看 aardio 代码:
import com.excel;
var xl = com.excel("/vba.xlsm");
//可以传任意对象给 VBA
var external = {
//aardio 函数被 VBA 调用了
Log = function(str){
import console.int;
console.log("VBA调用任意 aardio 函数,参数:",str)
}
}
//aardio 调用 VBA 函数
xl.vba.CallAnyting( external );
三、aardio + VBA + .NET
有趣的是,aardio 与很多编程语言都有良好的兼容性。
例如复杂的数据从 VBA 传到 aardio ,再从 aardio 传到 .NET ,都可以自动兼容,不需要复杂的封装或转换。
下面我们用 aardio 调用 VBA 获取 Excel 表格的所有数据。
然后 aardio 再将数据传给 .NET 表格控件 ReoGrid 并显示在窗口上。
全部代码也只有几句:
import win.ui;
var winform = win.form(text="ReoGrid");
//加载强大的 GeoGrid 表格
import dotNet.ReoGrid;
var grid = ReoGrid.ReoGridControl(winform);
var sheet1 = grid.CurrentWorksheet;
//加载 Excel 文件。
import com.excel;
var xl = com.excel("\vba.xlsm");
/*
VBA 获取数据,
然后加载到表格控件。
*/
sheet1["A1:D3"] = xl.vba.GetSheetData();
//显示窗口界面
winform.show();
win.loopMessage();
vba.xlsm 里的 VBA 代码如下:
Function GetSheetData() As Variant
Dim dataArr As Variant
Dim lastRow As Long
Dim lastCol As Long
Dim rng As Range
Dim i As Long, j As Long
lastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lastCol = Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Set rng = Range(Cells(1, 1), Cells(lastRow, lastCol))
dataArr = rng.Value
GetSheetData = dataArr
End Function
Public Sub CallAnyting(ByVal dispatchObject As Object)
dispatchObject.Log ("这是来自 VBA 的参数。")
End Sub
以上代码自动兼容 WPS JSA 环境。
aardio 调用 JSA 与调用 VBA 的代码没有任何区别,自动兼容。
唯一要注意的是,JSA 调用 aardio 对象的成员函数要通过 Invoke 函数,例如前面的 VBA 代码翻译为 JSA 代码:
function CallAnyting(aardioObject) {
//调用 aardio 函数,参数 @1 为函数名,后面为其他调用参数。
aardioObject.Invoke("Log","这是来自 JSA 的参数。");
//如果 aardioObject 是函数对象,则可以直接调用
//aardioObject("其他调用参数");
}
更多其他编程语言请参考 aardio 自带范例:
aardio 自带 自带 C语言、C++、C#、Python、Java、JavaScript、R语言、Julia、Fortan、PowerShell、VB、VBScript、批处理、VBA、FreeBASIC、PHP、Ruby、Delphi、Node.js、Go 语言 等交互范例。
扩展库里还能找到更多。
猜你喜欢
- 2024-10-08 使用VBA自动化处理Excel数据生成装箱单
- 2024-10-08 补课了!VBA过程的附加技能(vba 过程调用)
- 2024-10-08 VBA三种程序类型介绍(vba程序是什么意思)
- 2024-10-08 Excel VBA 提取word表格信息(vba提取sheet名字)
- 2024-10-08 rust跟Excel vba交互(rust制作表)
- 2024-10-08 VBA|使用窗体控件02:使用显示信息的标签控件
- 2024-10-08 Excel破解:如何快速破解VBA窗口密码
- 2024-10-08 VB/VBA中的函数,用了那么久,其实是这样的
- 2024-10-08 VBA|正确使用过程和自定义函数(vba自定义函数参数说明)
- 2024-10-08 VBA高级应用30例:Ribbon(功能区)的介绍
- 10-02基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- 10-02Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- 10-02AWD-LSTM语言模型是如何实现的_lstm语言模型
- 10-02NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 10-02使用ONNX和Torchscript加快推理速度的测试
- 10-02tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- 10-02Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- 10-02Gateway_gateways
- 最近发表
-
- 基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- AWD-LSTM语言模型是如何实现的_lstm语言模型
- NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 使用ONNX和Torchscript加快推理速度的测试
- tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- Gateway_gateways
- Coze开源本地部署教程_开源canopen
- 扣子开源本地部署教程 丨Coze智能体小白喂饭级指南
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)