专栏首页寒树Office与RPAScript Lab 06:事件处理,Excel 基础操作(4)

Script Lab 06:事件处理,Excel 基础操作(4)

准备工作

事件驱动编程,可以让操作变能更丰富,更改事件可能会使事情变得更容易处理。开发者可以靠着各种事件的的触发来设计可以自动执行的 Office 应用,比如可以在工作表中的选择时发生的事件,就是一个常见的应用场景。

如果曾经使用 VBA 的事件,会麻烦一些,而 VSTO 则要方便得多,通过重载运算符来操作。在 OfficeJS 中,事件操作介于两者之间,比 VSTO 要麻烦些,必须没有重载机制,但是比 VBA 又要简单些。我们先来看看传统的 Office 事件声明方式:

工作表事件

【VBA】

在工作表中的选择时发生的事件,也是事件驱动编程最常用到的一种。VBA 通常使用 Worksheet.SelectionChange 事件来检测工作表上的选择更改:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Debug.Print Target.Address
End Sub

【OfficeJS】

核心代码为:

sheet.onSelectionChanged.add(onSelectionChanged);

Excel.run
    (
    async (context) => {
        //准备工作
        const sheet = await OfficeHelpers.ExcelUtilities.forceCreateSheet(context.workbook, "MySheet");
        sheet.activate();
        OfficeHelpers.UI.notify("MySheet worksheet created !");
        await context.sync();

        //注册事件
        var eventResult = sheet.onSelectionChanged.add(onSelectionChanged);
        OfficeHelpers.UI.notify("MySheet worksheet SelectionChange event registed !")
        await context.sync();

        //事件函数
        function onSelectionChanged(event) {
            console.log(JSON.stringify(event));
        }
    }
    );

事件输出效果:

【小技巧】

Script Lab 编辑器不支持中文:

注释可以先写好,然后贴入代码。

notify 的提示目前中文均是乱码,无解。

【注销事件】

核心代码为:

eventResult.remove();

eventResult.remove();

后记

一个项目,有了事件驱动,才算能上真正的完整。加上前几节内容讲述了代码框架、Office JavaScript API 助手、Excel Api (数据操作),理论上您己经可以像 VBA 一样,创作出大部分的流程应用了。也希望将你的实践案例分享出来。

Script Lab 01:快速 Office 365 开发工具

Script Lab 02:Script Lab,知识储备

Script Lab 03:Script Lab,启动函数,Excel 基础操作(1)

Script Lab 04:Script Lab,九九乘法表,Excel 基础操作(2)

Script Lab 05:Office JavaScript API助手,Excel 基础操作(3)

Script Lab 06:事件处理,Excel 基础操作(4)

Script Lab 07:单词“卡拉OK”,Word 基础操作

Script Lab 08:异步调用函数,PowerPoint 基础操作

Script Lab 09:为 Officejs 开发配置 VSCode 环境

Script Lab 10:OIfficeJS 的三种调试方式

本文分享自微信公众号 - 寒树Office与RPA(OfficeRPA),作者:寒树爱函数

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 尝试:Script Lab,Excel 基础操作(1)

    前期01:尝试:Script Lab,快速 Office 365 开发工具 //SL01

    寒树Office与RPA
  • Script Lab 08:单词“卡拉OK”,Word 基础操作

    今天开始做一个 Word 的例子。基础部分是相同的,区别仅仅在于 Word API 的部分。还记得第一次我们代码的第一行从 Excel.run 开始,这里相应要...

    寒树Office与RPA
  • Script Lab 07:引入控件,Excel 基础操作(5)

    本教程己经到了 Excel 示例的收尾阶段,掌握前期的内容,基本上可以完成一个 Excel Web add-in 插件了,但如果能够引入一些常用的控件库,能达到...

    寒树Office与RPA
  • PHP中使用if的时候为什么建议将常量放在前面?

    在某些框架或者高手写的代码中,我们会发现有不少人喜欢在进行条件判断的时候将常量写在前面,比如:

    硬核项目经理
  • Script Lab 07:引入控件,Excel 基础操作(5)

    本教程己经到了 Excel 示例的收尾阶段,掌握前期的内容,基本上可以完成一个 Excel Web add-in 插件了,但如果能够引入一些常用的控件库,能达到...

    寒树Office与RPA
  • 思科修复云服务平台重大漏洞

    近日,思科修复了云服务产品线上包括云服务平台(CSP),可扩展 Firepower 操作系统(FXOS),NX-OS软件以及一些小型企业 IP 电话上的高危漏洞...

    FB客服
  • Android 自定义常用Dialog

    compile 'com.huanglinqing:dialogutils:1.0.0'

    黄林晴
  • 大话matlabの通用对话框

    通用对话框可以说是程序内部与计算交互的重要窗口,也是程序与用户互动的重要门户。引入通用对话框对程序交互往往能起到锦上添花的作用,下面就来对matlab通用对话框...

    艾木樨
  • CNNVD最新漏洞

    今日CNNVD共发布安全漏洞48个,更新安全漏洞2个。主要影响厂商为美国Google(22个)、美国IBM(6个)、美国Linux(4个),主要影响产品为And...

    企鹅号小编
  • 4-MSP430定时器_定时器中断

    一开始没写好就上传了,,,,,,,,这次来个全的 自己学MSP430是为了写一篇关于PID的文章,需要430在proteus上做仿真,一则认为在自动控制算法上P...

    杨奉武

扫码关注云+社区

领取腾讯云代金券