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

这篇具有很好参考价值的文章主要介绍了如何将微软 Office 宏转换为 ONLYOFFICE 宏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

如何将微软 Office 宏转换为 ONLYOFFICE 宏,教程,microsoft,开源,onlyoffice,宏,excel

VBA 宏

以下是原始的 VBA 宏代码:

Sub Button1_Click()
    Dim mycel As Range
    For 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] 的单元格中的值。

如何将微软 Office 宏转换为 ONLYOFFICE 宏,教程,microsoft,开源,onlyoffice,宏,excel

构建 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文章来源地址https://www.toymoban.com/news/detail-752683.html

到了这里,关于如何将微软 Office 宏转换为 ONLYOFFICE 宏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Asp.net Core使用Microsoft.Office.Interop.Word转换文档

    Asp.net Core使用Microsoft.Office.Interop.Word转换文档

    源代码网络上有很多,但是使用过程中发现问题还是有的,尤其是在文档属性配置不同的时候,出现的问题就是不能转换。在开发端没有问题,但在不同于开发端电脑的配置情况下,会出现意向不到的问题。此处对解决方案进行记录。 using Word = Microsoft.Office.Interop.Word;   pub

    2024年02月05日
    浏览(15)
  • Microsoft.Office.Interop.Word的COM 对象强制转换为接口类型失败

    System.InvalidCastException:“无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库

    2024年02月12日
    浏览(14)
  • OFFICE报错:无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型

    OFFICE报错:无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型

    无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败的原因是对 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。 (异常来自 HRESULT:0x

    2024年02月11日
    浏览(13)
  • 【Office】Microsoft Office 2016/2021 下载安装教程

    【Office】Microsoft Office 2016/2021 下载安装教程

    【Office】Microsoft Office 2016 下载安装教程 1. 下载 微软Office 登录官网:https://www.office.com/ 进 这个东西就是买新电脑的时候第一次登录就会加入到自己的微软账号,笔者这里就装2016了 当然很多学校也有类似于 正版软件服务平台 ,可以下载到专业版【某宝也可以买到】 2. 安装

    2024年02月13日
    浏览(15)
  • 无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型

    无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型

    报错: 无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型 安装了多版本的Office 安装过WPS后没正常卸载 以下四个操作基本覆盖常见原因了,可以从2.1.1尝试,每尝试一种,就去试一下看问题解决了没有,如果已经解决了,其他操作就不用试了 2.

    2024年02月04日
    浏览(13)
  • 如何激活Microsoft Office ?

    1、问题描述 问题描述:Microsoft Office (本人安装版本为:Microsoft Office Home and Student 2019)无法激活,提示“由于指定产品密钥的激活次数以达到了“Microsoft 软件许可条款”指定的软件许可证最大允许次数”,导致不能激活Office。 原因:由于之前用的电脑(旧电脑)预安装了

    2024年02月08日
    浏览(11)
  • 【word】无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的COM对象强制转换为接口类型

    【word】无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的COM对象强制转换为接口类型

    #问题描述: 使用某软件需要弹出word窗口时出现问题 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的COM对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对IID为 “00020970-0000-0000-C000-000000000046}”的接口的COM组件调用QueryInterface因以下

    2024年02月16日
    浏览(12)
  • 如何领取赠送的Microsoft Office 家庭学生版

    如何领取赠送的Microsoft Office 家庭学生版

    由于本人不喜欢出厂原装的系统,所以拿到电脑第一件事就是重装系统。导致没有领取到免费的office,虽说很多人使用WPS,但是秉承着不要白不要的原则,经过我几经寻找,找到了领取的办法。接下来我们看如何查看并领取我们买电脑送的office吧 第一步:确认自己的电脑是否

    2024年02月12日
    浏览(15)
  • Office无法激活时,如何高效联系微软官方获取有效支持

             ​在数字化办公的今天,Microsoft Office套件几乎是每个职场人士的必备工具。然而,有时我们可能会遇到Office无法激活的难题,这不仅影响工作效率,还可能带来不必要的焦虑。如果你正面临这样的困境,不必担忧,本文将为你提供多种联系微软官方支持的方法,帮

    2024年03月17日
    浏览(15)
  • Microsoft365和普通Office之间有什么区别 如何选择?

    Microsoft365和普通Office之间有什么区别 如何选择?

    微软以不断改造其产品而闻名:这也适用于其举世闻名的 Office:随着 Microsoft 365 的推出,流行的办公软件现在以订阅模式提供。 尽管许多用户和企业不确定 Microsoft 365 和 Office 之间的区别是什么,但这个新版本具有许多优势。 大眼仔旭对 Microsoft 365 和 Office 的全面比较旨在改

    2024年02月03日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包