使用displayDialogAsync创建对话框时,对话框中不能直接调用诸如window.Excel.run
等
得通过window.Office.context.ui.messageParent(‘xxx’)的方式将数据发送给主窗口,主窗口接受后,再调用window.Excel.run
等方法
示例如下
//创建新对话框 const url = 'https://www.w3cways.com' //调试时必须使用 https的域名 window.Office.context.ui.displayDialogAsync( url, { width: 40, height: 40 }, //百分比 (asyncResult: any) => { dialog = asyncResult.value dialog.addEventHandler( window.Office.EventType.DialogMessageReceived, //监听事件 (val: any) => { const { message } = val //对话框传递过来的数据 这里为 XXX window.Excel.run(async function (context: any) { //TODO return context.sync() }) }, ) }, )
打开的对话框中发送数据给主窗口
window.Office.context.ui.messageParent('XXX') //发送消息给主窗口