如何将微软 Office 宏转换为 ONLYOFFICE 宏

想要将微软 Office VBA 宏转换为可在 ONLYOFFICE 中无缝使用的宏?嗯,虽然这种需求并没有直接的解决方案,不过我们也会在本文中介绍 VBA 宏的转换步骤——正好我们手上也有一个来自用户的实际案例可供参考。

Transforming a Microsoft Office macro into an ONLYOFFICE macro

VBA 宏

以下是原始的 VBA 宏代码:

Sub Button1_Click()Dim mycel As RangeFor Each mycel In Columns("D:D").SpecialCells(xlCellTypeConstants, 23)If mycel = [TODAY()] Then mycel.Offset(0, 1) = [This_value]Next
End Sub

宏代码会对 D 列进行扫描,查找值为常量“23”的单元格,同时检查各个单元格中的值是否等于标记为 [TODAY()] 的单元格的值。如果值匹配的话,则会对其右侧的单元格进行更新,更新的值为标记为 [This_value] 的单元格中的值。

Transforming a Microsoft Office macro into an ONLYOFFICE macro

构建 ONLYOFFICE 宏

在将上述宏转换为与 ONLYOFFICE 兼容的 JavaScript 宏的过程中,我们需要使用 ONLYOFFICE API。 

对于 ONLYOFFICE 宏,我们首先需要通过 Api.GetActiveSheet() 函数获取活动工作表。然后便是从单元格 A2 和 A4 中获取值。这两个单元格就是 VBA 宏中 [TODAY()] 与 [This_value] 标记分别对应的单元格:

var sheet = Api.GetActiveSheet();
var dateValue = sheet.GetRange("A2").GetValue();
var updateValue = sheet.GetRange("A4").GetValue();

下一步是使用 sheet.GetRange(“D1:D10”) 定义需要进行迭代的单元格范围。这里的代码即确定了本例中的 D 列作为迭代范围,实际使用时您可按照自己的特定需求对其进行调整:

var dateRange = sheet.GetRange("D1:D10");

我们需要使用 ForEach 函数来在已定义范围内的各单元格上迭代执行代码。对于每个单元格,我们都会使用 range.GetValue() 来获取其当前值,然后与单元格 A2 内的值进行对比。如果匹配的话,则会使用 range.GetRow() 获取当前单元格的行号,然后借助 sheet.GetRange(“E” + row) 获取 E 列中的相应单元格:

dateRange.ForEach(function(range) {var currentDate = range.GetValue();// 检查当前日期是否与单元格 A2 中的值匹配if (currentDate === dateValue) {// 获取 E 列中的相应单元格var row = range.GetRow();var oRange = sheet.GetRange("E" + row);  }
});

最后,我们可通过 oRange.SetValue(updateValue) 使用单元格 A4 中的值来更新下一单元格的值(向右侧偏移一列):

   // 更新下一单元格中的值oRange.SetValue(updateValue);}
});

完整的宏代码如下:

(function()
{var sheet = Api.GetActiveSheet();
var dateValue = sheet.GetRange("A2").GetValue();
var updateValue = sheet.GetRange("A4").GetValue();
var dateRange = sheet.GetRange("D1:D10");
dateRange.ForEach(function(range) {var currentDate = range.GetValue();// 检查当前日期是否与单元格 A2 中的值匹配if (currentDate === dateValue) {// 获取 E 列中的相应单元格var row = range.GetRow();var oRange = sheet.GetRange("E" + row);// 更新下一单元格中的值oRange.SetValue(updateValue);}
});
})();

点击这里,观看视频,看看宏的效果如何!

总结一下,首先,我们无法直接将 VBA 宏转换为可在 ONLYOFFICE 中使用的 JavaScript 宏。不过,在为 ONLYOFFICE 构建宏的过程中,您可使用现有的 VBA 宏代码作为参考,与此同时借助 ONLYOFFICE API 方法,加上一些必要的调整,这样就能实现类似的功能。

虽然在这一过程中可能会需要进行一些代码重构工作,不过其完全是可行的。希望文本中简要介绍的内容能够帮助您成功打造出功能强大的 ONLYOFFICE 宏。拥抱广阔的可能性,尽享自定义的优势与乐趣。祝愿您的探索之旅一帆风顺!

相关链接

​​ONLYOFFICE 论坛​​

​​ONLYOFFICE API 文档​​

​​宏示例​​

​​GitHub 上的 ONLYOFFICE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/175071.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源维修上门服务小程序SAAS系统源码 带完整搭建教程

在现代生活中,家电设备维修往往是一个耗时且繁琐的过程。消费者需要花费大量时间寻找合适的维修人员,并面临服务质量不稳定的风险。同时,对于维修人员来说,寻找客户和接收订单的过程也十分繁琐。因此,开发一款基于小程…

【kafka】 查看节点的消息

对于初学者来说,可能想去节点看看有没有消息产生和消费,可以去kafka的bin目录下执行这个命令: kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic myTopic --from-beginning 这个命令可以理解为:生产过的消…

出入库管理系统vue2前端开发服务器地址配置

【精选】vue.config.js 的完整配置(超详细)_vue.config.js配置_web学生网页设计的博客-CSDN博客 本项目需要修改两处: 1、vue开发服务器地址:config\index.js use strict // Template version: 1.3.1 // see http://vuejs-templa…

【Java笔试强训】Day11(CM24 最近公共祖先、HJ86 求最大连续bit数)

CM24 最近公共祖先 链接:最近公共祖先 题目: 将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可能是结…

Uniapp开发 购物商城源码 在线电商商城源码 适配移动终端项目及各小程序

lilishop电商商城系统 商城移动端,使用Uniapp开发,可编译为所有移动终端项目及各小程序 源码下载:https://download.csdn.net/download/m0_66047725/88487579 源码下载2:关注我留言

6.jvm中对象创建流程与内存分配

目录 概述对象的创建流程对象的内存分配方式对象怎样才会进入老年代大对象直接进入老年代内存担保 jvc 相关指令查看jdk默认使用的gc查看当前jdk支持的有哪些gc查看指定进程当前正在使用的gc 结束 概述 相关文章在此总结如下: 文章地址jvm基本知识地址jvm类加载系…

竞赛选题 深度学习的水果识别 opencv python

文章目录 0 前言2 开发简介3 识别原理3.1 传统图像识别原理3.2 深度学习水果识别 4 数据集5 部分关键代码5.1 处理训练集的数据结构5.2 模型网络结构5.3 训练模型 6 识别效果7 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习…

8.指令格式,指令的寻址方式

目录 一. 指令格式 二. 扩展操作码 三. 指令寻址 (1)指令寻址 (2)数据寻址 1.直接寻址 2.间接寻址 3.寄存器寻址 4.寄存器间接寻址 5.隐含寻址 6.立即寻址 7.基址寻址 8.变址寻址 9.相对寻址 10.堆栈寻址 一. 指令…

智慧城市井盖选择,智能井盖传感器特点介绍

在不断发展的智慧城市技术领域,创新的过程一直是永无止境的。 顺应科学技术的发展潮流,一项惠民的举措正在悄然改变人们的生活。智能井盖传感器看似是不起眼的设备,但是它们就在我们脚下,正在悄无声息的完善城市基础设施和城市生命…

StackExchange.Redis 高并发下timeout超时问题如何解决?

查看服务端程序负载还行,根据打印的连接看到一知半懂,按GitHub的issue提示,这2个Busy的数量不能比Min的大,即要提示Min的数值; 的各个字段: Timeout performing EXEC (1000ms): 表示在执行一个事务(MULTI..…

预览PDF并显示当前页数

这里写目录标题 步骤实例实例效果图 步骤 1.安装依赖 npm install --save vue-pdf2.在需要的页面&#xff0c;引入插件 import pdf from vue-pdf3.使用 单页pdf可以直接使用 <pdf :src"获取到的pdf地址"></pdf>多页pdf通过循环实现 html标签部分 &l…

日历应用程序 BusyCal mac中文版软件特点

BusyCal mac是一款日历应用程序&#xff0c;它可以帮助用户轻松地管理日程安排、事件提醒、会议安排等。BusyCal 支持 macOS 和 iOS 平台&#xff0c;并且可以与 iCloud、Google 日历、Exchange 等多种日历服务进行同步。 BusyCal mac软件特点 强大的日历功能&#xff1a;Busy…