aardio + VBA ( Excel ) 快速开发,3 分钟可入门
liuian 2025-06-13 14:49 4 浏览
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 语言 等交互范例。
扩展库里还能找到更多。
相关推荐
- 办公小技巧:定时提醒不慌张 Excel制作智能提醒器
-
平时工作或学习中总有许多事情需要提醒,比如参加高考的日子、女友的生日、每周例会等。我们可以利用Excel的函数制作实用的智能提醒器,就不用担心忽略这些重要的日子了。每周例会轻松提醒公司规定每个月的最后...
- 使用vba将Excel 文件转成 CSV 文件
-
使用vba将Excel中的内容写入文本文件,保存为txt或csv格式。方法一:SubtoCSV()DimshtAsWorksheetDimiAsInteger,j...
- 用Excel编写俄罗斯方块(vb做俄罗斯方块)
-
看到这个题目,想必你一定会感到非常惊讶,什么,Excel居然能开发游戏?没错,Excel的强大取决于使用者,遇强则强,遇弱则弱。但我这篇文章并不是为了展示Excel使用过程中的奇技淫巧,而是主要写给那...
- 该死的手抄滚开(该死的手抄滚开表情包)
-
碰到形式主义惯犯或硬拔存在感的,顶不住要手抄怎么办?电脑时代这一切都不是问题,除了纸张背面少点中性笔划下的凸痕。网络上有大量的手写体,比较大众化(就是丑)的有李国夫手写体、陈静的字体、萌妹子等,我们也...
- Excel二维表转换一维表,三种方法一网打尽!
-
今天高顿网校小编向大家分享二维表格转一维表的三种方法,分别用到函数、数据透视表和VBA代码。三种方法各有利弊,表亲可以自行选择。如下图,A1:E5是数据源,A7:C22是最终要实现的结果样式:一起动手...
- PMC用到的所有函数,大咖总结,实用干货,PMC必备神器!
-
PMC用到的所有函数你和PMC大咖之间的差异,就是这些Excel函数!1.PMC日常用到的所有函数如下,大咖总结,实用干货,PMC必备神器!每个函数都有实例讲解,不怕你不会。序号PMC工作需求EXCE...
- Excel VBA应用-13:统计业务员业绩,目标完成率分析表
-
在评价业务员销售业绩时,往往会给业务员设定销售目标,根据实际业务计算业务员的目标完成率。报表格式如下图:要计算目标完成率,首先要有销售目标的数据,可以在Excel表中建立一个销售目标表,这种方式的好处...
- VBA高级应用30例应用2实现在列表框内及列表框间实现数据拖动
-
《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能...
- 技术分析:一款流行的VBA宏病毒(vba宏是什么)
-
1.通过邮件传播的宏病毒近期流行的一个宏病毒通过邮件进行传播,捕捉到的一个样本,其邮件头如下:邮件的内容是这样子的(为节省篇幅,省略号处省略部分内容):YourbillsummaryAccount...
- Excel规划求解怎么用?最简单的3*3不同数字填充技...
-
Excel有什么样的功能,它到底有多强大?Excel表格中有函数公式、图表、操作技巧、vba操作等不同类型的使用方法,但还有一种更加重要的用法就是数据分析,需要用到的就是我们的Excel规划求解。规划...
- excel vba vb.net考勤时间处理通用方法(2)
-
接上期:excelvbavb.net考勤时间处理通用方法(1)DimstartTicksAsIntegerstartTicks=My.Computer.Clock.Ti...
- aardio + VBA ( Excel ) 快速开发,3 分钟可入门
-
aardio很小,下载就可以使用,没有任何复杂步骤。aardio与ExcelVBA(兼容WPSJSA)可以相互调用函数,不需要任何复杂的封装。3分钟够用,下面开始:一、aardio...
- VBA+SQL实战:根据时间智能匹配比赛场次,获取最近3场比赛数据
-
“每天有大量比赛数据,如何快速判断某时间属于哪一场比赛,并自动获取最近3场记录?”本文介绍VBA和SQL双方案,实现:自动匹配时间所属场次(如“第一场/第二场/第三场”)智能返回最近3场比赛数据(跨...
- Excel VBA 每天一段代码:自定义分页函数
-
3月12日视频《ExcelVBA网友答疑:ActiveX控件实现数据分页、翻页》中,我自定义了函数窗体数据查询(),现将代码公布如下:参数说明:1、ItemNum每页显示的数据数量(由复合框下...
- VBA布尔矩阵筛选在财会场景的六大高阶应用
-
基于内存位运算与矩阵预编译技术,布尔矩阵可大幅提升财务数据处理效率。以下是针对2025年财务自动化需求的创新实践案例,覆盖审计、税务、合并报表等核心场景:1.多维度税务异常检测场景:在500万条交易...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
python使用fitz模块提取pdf中的图片
-
《人人译客》如何规划你的移动电商网站(2)
-
Jupyterhub安装教程 jupyter怎么安装包
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- table.render (33)
- uniapp textarea (33)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)