使用office.js(Office加载项)访问Excel中BindingDataChanged事件和单元格位置中的旧单元格值

我在Excel中有一个表,我想在用户修改单元格值时检测更改。 为了反映这些特定的变化,我需要知道细胞的位置和旧细胞的价值。 我能够在Excel VBA / COM加载项中实现此function,但无法使用JavaScript。

在这一点上没有任何直接的方法来获得位置和旧的单元格值。 但是,有一些解决方法可以使用,直到有更好的方法:

– logging用户表格的内容:当第一次链接到加载项时,可以获取整个表格。 添加绑定并侦听BindingDataChanged事件来检测更新。 每次有更新时,您都可以手动将其与自己的副本进行比较。 加载项重新启动后,您可以使用“ 设置”对象重新初始化您的内存中的副本。

– 使用BindingSelectionChanged事件和Document.SelectionChanged事件来保存用户在表内的select。 然后,只要表中的数据发生变化,请确定使用保存的BindingSelectionChangedEventArgs当用户进行更改时select了哪个单元格。 请注意,即使用户不执行任何操作(例如,另一个加载项可能会更改内容),也可能发生对表的更改。 另外请注意,BindingSelectionChangedEventArgs报告用户select后的最终位置,而不是初始位置,因此,每当用户更改单元格但在表格中保留其select时,您都需要使用倒数第二个位置。

另外,您可能实际上并不需要使用上述解决方法,具体取决于您的加载项所做的操作:例如,如果表格很小,则只要发生更改,就可以完全覆盖必要的列。

-Michael(加载项目组的项目经理)