Создавайте элементы управления контентом, используя MS Word Add-In API при вставке текста - PullRequest
0 голосов
/ 21 марта 2020

Я вставляю параграфы в виде простого текста в мой документ Word с помощью надстройки, но я хотел бы разместить элементы управления содержимым для определенных слов этого абзаца , пока вставляю этот абзац. Есть ли какой-нибудь способ, которым мы можем это сделать или элементы управления контентом работают только после вставки текста?

1 Ответ

1 голос
/ 21 марта 2020

Да, это возможно, как показано в следующем фрагменте кода, написанном в Script Lab, путем изменения образца, предоставленного этим инструментом.

Хитрость заключается в работе с (как минимум) двумя диапазонами, один для другой текст для элементов управления контентом, как показано во фрагменте кода ниже и показан на снимке экрана в конце.

Пояснение

Начальная точка - range, соответствующая целевой области (пример предполагает весь документ). Затем он «копируется» в новый объект range для вставляемого текста (в примере предполагается, что он должен находиться в конце существующего содержимого).

Новое текстовое содержимое до точки, где требуется элемент управления контентом, вставляется в новый абзац («на новой строке») - \n в начале строки.

Затем создается новый range в конце диапазон текста для управления контентом. Он вставляется, форматируется и ему присваивается текст.

Затем для цели текста range устанавливается после диапазона управления содержимым и добавляется дополнительный текст.

Код

await Word.run(async (context) => {
    let rngDoc = context.document.body.getRange("Content");
    let rngTarget = rngDoc.getRange("End");
    rngDoc.load("text"); 

    await context.sync();

    console.log(rngDoc.text);

    rngTarget.insertText("\nStart: ", "Start");
    let rngCC = rngTarget.getRange("End");
    let cc = rngCC.insertContentControl();
    cc.appearance = Word.ContentControlAppearance.boundingBox;
    cc.insertText("In content control", "Replace");

    rngTarget = rngCC.getRange("After");
    rngTarget.insertText(" End.", "After");

    await context.sync();

    console.log("Content controls inserted: " );

  });

Результат

https://i.stack.imgur.com/gQb5Q.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...