我需要通过Office.js API同时选择多个范围,就像您可以通过按住CTRL键并突出显示多个不连续的段落一样在MSWord UI中进行操作,如下面的屏幕截图:
此尝试无效。与其突出显示文档中“ the”一词的前两个实例,不如突出显示第一个实例,然后突出显示第二个实例:
Word.run(function (context) {
// Set up the search options.
var options = Word.SearchOptions.newObject(context);
options.matchCase = false;
options.ignoreSpace = true;
options.ignorePunct = true;
options.matchWildcards = true;
var searchText = "the";
var searchResults = context.document.body.search(searchText, options);
context.load(searchResults);
return context.sync().then(function () {
searchResults.items[0].select();
searchResults.items[1].select();
});
});
答案 0 :(得分:1)
否,所有API都不支持多个选择。甚至用户使用Ctrl + select的能力也是相对较新的。该功能从未被延续到API。
API最能做的是突出显示(或格式化)感兴趣的Range
对象。 Word的对话框中有这种功能, COM API也可以使用,但是我找不到与JS API等效的功能...
答案 1 :(得分:0)
要确认Cindy提到的内容,Office.js不仅不支持非连续选择(对于Word,虽然我们确实支持Excel,但非连续选择),但在其他平台(即Word Online)上也手动不支持。 >
答案 2 :(得分:0)
有可能。 在使用绑定和 Office.context.document.goToByIdAsync() 时,我遇到了一个奇怪的结果。使用此函数,您可以导航到任何绑定,而无需调用 Word.Run(),这很好。有一个选项叫做SelectionMode,默认情况下不选择绑定,但是可以设置为选择绑定的内容。奇怪的是,以这种方式选择内容并不会取消选择当前选择!这不是我想要的结果,fwiw;对我来说,这是一个麻烦事,需要我在使用 goToByIdAsync 之前“取消选择”任何当前选择。但是,您可以使用它来选择多个范围,方法是将它们包装在 contentControls 中,然后在它们上创建绑定,然后在每个绑定上调用 goToByIdAsync(将 SelectionMode 设置为 Select)。 我没有测试过这个。
编辑 实际上,先前的选择已取消选择,但它仍然突出显示,就好像它仍然被选中一样。这似乎是一个显示错误。