2016-08-19 11 views
5

私は、反復セクションのコンテンツコントロールの中にラップされたコンテンツコントロールを持つ単語テンプレートを持っています。追加のようなアイテムのリピーターを削除するボタンを作成する必要があります。docxファイルのマクロ内のインデックスによって、繰り返しセクション項目をプログラムで削除しますか?

繰り返しセクションの項目を削除する方法を理解しようとしています。しかし、この場合、私は常に最後の項目を削除します。しかし、ユーザーが選択したアイテムを削除できるようにしたい。

Sub delete() 
    Dim cc As ContentControl 
    Dim Index 
    Set cc = ThisDocument.SelectContentControlsByTag("ResolRepeater").Item(1) 
    With cc 
     .LockContentControl = False 
     .LockContents = False 
     .AllowInsertDeleteSection = True 

     For Index = 1 To cc.RepeatingSectionItems.Count 
     If Selection.Range.InRange(cc.RepeatingSectionItems(Index).Range) Or cc.RepeatingSectionItems(Index).Range.InRange(Selection.Range) Then 
      Exit For 
     End If 
     Next Index 

     'can't delete, get Run-Time Error '5904': "you can not change the range" 
     cc.RepeatingSectionItems(Index).Range.delete 

     'this lines always delete last element: 
     'cc.RepeatingSectionItems(Index).Range.Select 
     'Selection.Delete 

    End With 
End Sub 

word template

私はどんな答えに喜んでいるでしょう。..

答えて

1

あなたはこのContentControlBeforeDeleteイベントをMSDN Link

代わりに処理するだろうそのうちの一つの方法、回数行うことができます現在のSelection.rangeを使用して、範囲(開始点と終了点を含む)にコンテンツタイプがwdContentControlRepeatingSectionであるかどうかを確認し、コントロールを削除するだけです。

ような何か(コードがテストされていません):

var contentControl = Selection.Range.ContentControls; 
if (contentControl.Type == Microsoft.Office.Interop.Word.WdContentControlType) 
{ 
    contentControl.Delete(); 
} 
関連する問題