> 文章列表 > wps宏编辑器Api接口js事件讲解

wps宏编辑器Api接口js事件讲解

wps宏编辑器Api接口js事件讲解

在WPS官方的开放平台宏编辑器API中有关于事件的详细描述,包括:表格事件、文字事件、演示事件、控件事件,本文只阐述表格事件相关的知识点,比如:都有哪些表格事件,如何通过JS编程来捕获事件、处理事件,以实现我们对表格的特殊处理。

1、开放平台对事件的描述

wps宏编辑器Api接口js事件讲解
通过 WPS宏编辑器能够对 WPS 应用程序发出的事件添加 JavaScript 方法进行处理。 在通知型事件中,可以接收已经发生变化,比如通过WindowActivate事件,可以对文档的切换做一些功能性处理; 在询问型事件中,可以控制是否继续执行当前操作,比如通过WorkbookBeforeClose事件,可以取消文档的关闭。

1)找到WorkbookBeforeClose事件

wps宏编辑器Api接口js事件讲解

2)处理事件

function Application_WorkbookBeforeClose(Wb, Cancel)
{if (!Wb.Saved) {MsgBox("请先保存文档!")Cancel.Value = true;}
}

3)查看效果

当表格工作簿有内容变动未保存时,关闭该工作簿就会提示:请先保存文档,点击确定按钮后会取消关闭。

  • 如图所示,内容变动未保存,工作簿标签栏会有一个如红框所示小图标。
    wps宏编辑器Api接口js事件讲解
  • 关闭工作簿,就会弹出如下提示框:
    wps宏编辑器Api接口js事件讲解
  • 点击确定按钮后,会取消关闭

2、Application 事件

1)事件列表

名称 触发时机
NewWorkbook 当新建工作簿时触发此事件。
SheetActivate(Sh) 当激活任一工作表时触发此事件。
SheetBeforeDelete(Sh) 当删除任一工作表之前触发 此事件。
SheetBeforeDoubleClick(Sh, rg, cancel) 当双击任一工作表之前触发此事件。
SheetBeforeRightClick(Sh, rg, cancel) 当右击任一工作表之前触发此事件 。
SheetCalculate(Sh) 在任一工作表进行计算时触发此事件。
SheetChange(Sh, rg) 当用户或外部链接更改了任一工作表中的单元格时触发此事件。
SheetDeactivate(Sh) 当任一工作表被切换到非激活状态时 触发此事件。
SheetFollowHyperlink(Sh, Target) 单击任一工作表的超链接时触 发此事件。
SheetSelectionChange(Sh, Target) 任一工作表上的选定区域发生更改时,将触发此事件。
WindowActivate(Wb, Wn) 任一工作簿窗口被激活时,将触发此事件。
WindowDeactivate(Wb, Wn) 任一工作簿窗口被切换到非激活状态时 触发此事件。
WindowResize(Wb, Wn) 任一工作簿窗口调整大小时将触发此事件。
WorkbookActivate(Wb) 任一工作簿被激活时,将触发此事件。
WorkbookAfterSave(Wb, Success) 任一工作簿被保存之后触发此事件。
WorkbookBeforeClose(Wb, Cancel) 任一打开的工作簿关闭之前触发此事件。
WorkbookBeforePrint(Wb, Cancel) 在打印任一打开的工作簿之前触发此事件。
WorkbookBeforeSave(Wb, SaveAsUI, Cancel) 任一工作簿被保存之前触发 此事件。
WorkbookDeactivate(Wb) 任一工 作簿被切换到非激活状态时触发此事件。
WorkbookNewSheet(Wb, Sh) 在任一打开的工作簿中创建新工作表时触发此事件。
WorkbookOpen(Wb) 当打开一个工作簿时触发此事件。

2)参数通用解释

  • Wb,Workbook,工作簿
  • Wn,Window,窗口对象
  • Sh,Object,工作表
  • rg,Range对象,单元格对象
  • cancel,Object,如果设置其属性Value为 true,则取消本次操作。
  • SaveAsUI,Boolean,如果为true则表示此次保存操作将会弹出保存或是另存为对话框
  • Success,Boolean,结果是true还是false

3)具体事件说明请参考wps开放平台说明

3、Workbook事件

1)事件列表

名称 触发时机
Activate 该工作簿被激活时,将触发此事件。
AfterSave(Success) 该工作簿被保存之后触发此事件。
BeforeClose(Cancel) 该工作簿关闭之前触发此事件。
BeforePrint(Cancel) 该工作簿打印之前触发此事件。
BeforeSave(SaveAsUI, Cancel) 该工作簿保存之前触发此事件。
Deactivate 该工作簿被切换到非激活状态时触发此事件。
NewSheet(Sh) 该工作簿中创建新工作表时触发此事件。
Open 该工作簿打开时触发此事件。
SheetActivate(Sh) 当激活该工作簿任一工作表时触发 此事件。
SheetBeforeDelete(Sh) 删除该工作簿任一 工作表之前触发此事件。
SheetBeforeDoubleClick(Sh, rg, cancel) 双击该工作簿任一工作表之前 触发此事件。
SheetBeforeRightClick(Sh, rg, cancel) 右击该工作簿任一工作表之前 触发此事件。
SheetCalculate(Sh) 在该工作簿任一工作表进行 计算时触发此事件。
SheetChange(Sh, rg) 当用户或外部链接更改了该工作簿任一 工作表中的单元格时触发此事件。
SheetDeactivate(Sh) 当该工作簿任一 工作表被切换到非激活状态时触发此事件。
SheetFollowHyperlink(Sh, Target) 单击该工作簿任一 工作表的超链接时触发 此事 件。
SheetSelectionChange(Sh, Target) 该工作簿任一工作表上的选定区域发生更改时,将触发此事件。

2 )参数基本同Application事件

3)具体事件说明请参考wps开放平台说明

4、Application、Workbook事件关系

我们不难发现很多事件在Application、Workbook中都有,比如Application.WorkbookActivate(Wb), Workbook.Activate()都表示工作簿激活时会触发该事件,那么两者到底什么关系?

  • Application可以理解是表格应用级别的,所有工作簿激活都会触发该事件;
  • Workbook只对当前工作簿本身生效;
  • 如果同一事件在Application、Workbook都有捕捉处理,则先触发Workbook,后触发Application,如下案例所示
function Application_WorkbookActivate(Wb)
{MsgBox("Application event: " + Wb.Name + " is avtived!");
}
function Workbook_Activate()
{MsgBox("Workbook event: " + ActiveWorkbook.Name + " is avtived!");
}

先触发workbook事件
wps宏编辑器Api接口js事件讲解
后触发Application事件
wps宏编辑器Api接口js事件讲解