Excel 登记选举变更

Excel 登记选举变更,excel,vue.js,office-js,office-addins,Excel,Vue.js,Office Js,Office Addins,在过去的几天里,我一直在尝试为excel制作一个基于VUE的taskpane加载项 我遵循了上的指南,并尝试注册onSelectionChange的事件处理程序。它在某种程度上是成功的,但它似乎在一段时间后将事件排队。然后,我必须将任务窗格悬停或执行类似于ctrl+c的操作,以便它执行排队的代码 我是JS和Vue的新手,所以我很可能错过了一个重要的上下文 我的代码如下: import Vue from 'vue' import App from './App' Vue.config.produ

在过去的几天里,我一直在尝试为excel制作一个基于VUE的taskpane加载项

我遵循了上的指南,并尝试注册onSelectionChange的事件处理程序。它在某种程度上是成功的,但它似乎在一段时间后将事件排队。然后,我必须将任务窗格悬停或执行类似于ctrl+c的操作,以便它执行排队的代码

我是JS和Vue的新手,所以我很可能错过了一个重要的上下文

我的代码如下:

import Vue from 'vue'
import App from './App'

Vue.config.productionTip = false

/* eslint-disable no-new */

const Office = window.Office
Office.onReady()
  .then(
    registerSelectionChange(), // moved in here based on input from Rick
    new Vue({
      el: '#app',
      components: {App},
      template: '<App></App>'
    })
  )

async function registerSelectionChange() {
  return await Excel.run(async function (context) {
      let ws = context.workbook.worksheets.getActiveWorksheet();
      ws.onSelectionChanged.add(handleSelectionChange);
      return await context.sync()
  })
}

async function handleSelectionChange(event){
    return await Excel.run(async function(context){
        let ws = context.workbook.worksheets.getActiveWorksheet();
        let range = ws.getRange(event.address)
        range.values = [[1]]
        return await context.sync()
    })
}
从“Vue”导入Vue
从“./App”导入应用程序
Vue.config.productionTip=false
/*eslint禁用无新*/
const Office=window.Office
Office.onReady()
.那么(
registerSelectionChange(),//根据Rick的输入移到这里
新Vue({
el:“#应用程序”,
组件:{App},
模板:“”
})
)
异步函数寄存器SelectionChange(){
return wait Excel.run(异步函数(上下文){
让ws=context.workbook.worksheets.getActiveWorksheet();
ws.onSelectionChanged.add(handleSelectionChange);
return wait context.sync()
})
}
异步函数handleSelectionChange(事件){
return wait Excel.run(异步函数(上下文){
让ws=context.workbook.worksheets.getActiveWorksheet();
let range=ws.getRange(event.address)
range.values=[[1]]
return wait context.sync()
})
}

由于
registerSelectionChange()
调用Office API,因此应该在
Office.onReady
中调用它。有关详细信息,请参阅。请查看这是否有帮助。

由于
registerSelectionChange()
调用Office API,您应该在
Office.onReady中调用它。有关详细信息,请参阅。请查看是否有帮助。

我现在发现
注册表选择更改()存在问题。
。修复方法是添加
MutationObserver=null在部分中。

更多信息。

我现在发现
注册表选择更改()
存在问题。修复方法是添加
MutationObserver=null在部分中。

更多信息。

Hi Rick谢谢您的输入。我已将其移动到我的
.then()
中,当任务窗格重新加载时,它会工作。但是,在一段时间后将事件排队的问题仍然存在。您能否提供有关排队的更多详细信息?哪些步骤会导致问题,您希望看到什么?是否重复选择不同的内容?当我重新加载任务窗格并在工作表周围单击时,所选单元格的值将更改为1,持续约10秒。在最初的10秒后,它将停止输入1。如果我将鼠标悬停在任务窗格上,或按ctrl+c键,它将在停止反应后所选的所有单元格中输入1。嗨,Rick,谢谢你的输入。我已将其移动到我的
.then()
中,当任务窗格重新加载时,它会工作。但是,在一段时间后将事件排队的问题仍然存在。您能否提供有关排队的更多详细信息?哪些步骤会导致问题,您希望看到什么?是否重复选择不同的内容?当我重新加载任务窗格并在工作表周围单击时,所选单元格的值将更改为1,持续约10秒。在最初的10秒后,它将停止输入1。如果我将鼠标悬停在任务窗格上或按ctrl+c键,它将在停止反应后选择的所有单元格中输入1。