2017-08-08 13 views
2

問題

が、私はdocument.bindings.addFromSelectionAsyncを使用して現在の選択をバインドする方法を知っている、しかし、私は部分文字列をバインドする方法を発見していない選択の部分文字列をバインド現在の選択肢のオフィスのJavaScript API:MS WordのオフィスのJavaScript APIを使用して

たとえば、ユーザーが段落全体を選択し、最初の単語のみをバインドしたい場合は、どのようにしてこれを行うことができますか?私は部分文字列をバインドする方法を発見していない:失敗した

  1. まず、結合選択後、部分文字列を結合した後、最初のバインディングを削除近づきます。
  2. 最初に選択を変更してaddFromSelectionAsyncを使用すると、選択を変更する方法が見つかりませんでした。

答えて

2

In Word バインディングは、ドキュメント内のコンテンツコントロールによって物理的に表されます。したがって、一般的に、必要な場所(この場合は選択範囲の最初の単語)にコンテンツコントロールを作成し、それにtitleを付けて、最後にbindings.addFromNamedItemメソッドを使ってバインディングを作成することができます。要約すると

  1. あなたはバインディングを作成したい範囲を取得します。この場合、選択範囲内の最初の単語が必要になります。
  2. 範囲を取得したら、コンテンツコントロールでラップしてタイトルを割り当てます。
  3. 最後に、そのタイトルを使用してaddFromNamedItemを使用します。ここで

サンプルです:

Word.run(function (context) { 
 
     //first we get the first word in the selection by using the split method, and using space as delimiter and then we add a content control 
 
     var firstWordContentControl = context.document.getSelection().split([" "], true, false, true).getFirst().insertContentControl(); 
 
//let's add a title. 
 
     firstWordContentControl.title = "BindingID"; 
 
     return context.sync() 
 
      .then(function() { 
 
//we reuse the title to create the binding. 
 
       Office.context.document.bindings.addFromNamedItemAsync("BindingID", "text", {}, function (result) { 
 
        console.log(result.status); 
 
        if (result.status == "succeeded") { 
 
         // lets create an event! 
 
         result.value.addHandlerAsync(Office.EventType.BindingSelectionChanged, function() { 
 
          console.log("event happened"); 
 
         }) 
 
        } 
 
       }); 
 
      }) 
 
    }) 
 
     .catch(function(exception) { 
 
     OfficeHelpers.Utilities.log(exception); 
 
    })

は、この情報がお役に立てば幸いです。 -元

2

あなたが探しているものではありませんが、Word APIは、これを達成するために必要なものをほとんど提供します。

ユーザの現在の選択は、document.getSelection()を使用して取得できます。これはRange objectを返します。ここからParagraphschild ranges(単語区切り規則に基づいて)などにドリルすることができます。

探しているテキストを反映するRangeオブジェクトがあると、range.Select()はその範囲をUIで選択します。ここからaddFromSelectionAsyncを使用してバインディングを確立することができます。

関連する問題