2016-08-19 3 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(); 
}