网站首页 > 技术文章 正文
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(功能区)的介绍
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 539℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 497℃MySQL service启动脚本浅析(r12笔记第59天)
- 476℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 474℃启用MySQL查询缓存(mysql8.0查询缓存)
- 454℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 434℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 432℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)