网站首页 > 精选文章 正文
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 语言 等交互范例。
扩展库里还能找到更多。
猜你喜欢
- 2025-07-03 VBA高级应用30例应用2实现在列表框内及列表框间实现数据拖动
- 2025-07-03 excel 如何取得小数位数(函数+VBA)
- 2025-07-03 技术分析:一款流行的VBA宏病毒(运行vba宏)
- 2025-07-03 Excel规划求解怎么用?最简单的3*3不同数字填充技巧你应知道
- 2025-07-03 excel vba vb.net考勤时间处理通用方法(2)
- 2025-07-03 Excel VBA 每天一段代码:自定义分页函数
- 2025-07-03 Excel 学习心得,不忘初心(excel心得体会1500字)
- 2025-07-03 Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库-二)
- 2025-07-03 如何重新执行Excel表中的计算公式,这个方法不能错过
- 2025-07-03 Excel常用技能分享与探讨(5-宏与VBA简介 VBA-实用自定义过程)
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)