2009-04-15 3 views
0

현재 VB.Net 응용 프로그램 내에서 아래 코드를 사용하여 Word 문서의 특정 텍스트를 찾습니다. 텍스트는 .Text 문에서 문자 코드로 표시되는 기호로 둘러싸여 있습니다. 아래 코드는 정상적으로 작동합니다. 문제는 이제 문서 내의 원하는 텍스트가 삭제로 표시되고 문서 내에서 추적 된 변경으로 나타나는 경우가 있습니다. 나는 삭제 표시되지 않은 원하는 텍스트 만 찾고 싶습니다. 발견 된 텍스트가 삭제되었는지 확인하는 방법을 알고있는 사람 있습니까?Microsoft.Office.Interop.Word에서 Selection.Find를 사용하여 문서의 변경 내용을 찾으십시오.

xSelection.MoveStart(Word.WdUnits.wdStory) 
    xSelection.Find.ClearFormatting() 
    xSelection.Find.Replacement.ClearFormatting() 
    With xSelection.Find 
     .Text = ChrW(65000) & "(\[*)" & ChrW(65001) 
     .Replacement.Text = "" 
     .Forward = True 
     .Wrap = Word.WdFindWrap.wdFindContinue 
     .Format = False 
     .MatchCase = False 
     .MatchWholeWord = False 
     .MatchByte = False 
     .MatchAllWordForms = False 
     .MatchSoundsLike = False 
     .MatchFuzzy = False 
     .MatchWildcards = True 
    End With 
    xSelection.Find.Execute(Replace:=Word.WdReplace.wdReplaceNone) 

    Do While xSelection.Find.Found 
     ........Execute additional code here 
    Loop 

답변

0

내게는 개정판보기를 검색하기 전에 최종본으로 설정합니다. 그런 다음 최종 버전에서 보이는 텍스트 만이 발견 (당신은 백업 이전 값을 할 수 있고 검색이 완료된 후보기를 복원) :

ActiveDocument.Windows(1).View.RevisionsView = wdRevisionsViewFinal 

전체 코드 :

' set view to show final document revision 
' to prevent deleted text from being found 
Word.WdRevisionsView revisionsView = xSelection.Document.Windows(1).View.RevisionsView 
xSelection.Document.Windows(1).View.RevisionsView = Word.WdRevisionsView.wdRevisionsViewFinal 

xSelection.MoveStart(Word.WdUnits.wdStory) 
xSelection.Find.ClearFormatting() 
xSelection.Find.Replacement.ClearFormatting() 
With xSelection.Find 
    .Text = ChrW(65000) & "(\[*)" & ChrW(65001) 
    .Replacement.Text = "" 
    .Forward = True 
    .Wrap = Word.WdFindWrap.wdFindContinue 
    .Format = False 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchByte = False 
    .MatchAllWordForms = False 
    .MatchSoundsLike = False 
    .MatchFuzzy = False 
    .MatchWildcards = True 
End With 
xSelection.Find.Execute(Replace:=Word.WdReplace.wdReplaceNone) 

Do While xSelection.Find.Found 
    ........Execute additional code here 
Loop 

' restore previous view 
xSelection.Document.Windows(1).View.RevisionsView = revisionsView 
0

을 나는 통해 루핑 결국 D

For Each xRevision In theDoc.Revisions 
     If xRevision.Type = Word.WdRevisionType.wdRevisionDelete Then 
      xRevision.Range.Font.Color = Word.WdColor.wdColorBlack 
     End If 
    Next 

그럼 내가 찾기를 할 수 다르게 발견 된 의견을 치료 : 삭제 된 버전의 글꼴 색상을 변경, 각 개정은과 같이 삭제되지 않은 의견과 구분하기 자신의 글꼴 색상에 epending :

xSelection.MoveStart(Word.WdUnits.wdStory) 
    xSelection.Find.ClearFormatting() 
    xSelection.Find.Replacement.ClearFormatting() 
    With xSelection.Find 
     .Text = ChrW(65000) & "(\[*)" & ChrW(65001) 
     .Replacement.Text = "" 
     .Forward = True 
     .Wrap = Word.WdFindWrap.wdFindContinue 
     .Format = False 
     .MatchCase = False 
     .MatchWholeWord = False 
     .MatchByte = False 
     .MatchAllWordForms = False 
     .MatchSoundsLike = False 
     .MatchFuzzy = False 
     .MatchWildcards = True 
    End With 
    xSelection.Find.Execute(Replace:=Word.WdReplace.wdReplaceNone) 

    Do While xSelection.Find.Found 
     If xSelection.Font.Color = Word.WdColor.wdColorAutomatic Then 
      ..... 
     End If 
     xSelection.Find.Execute() 
    Loop 
0

시도 전에 검색하거나 Word 문서 처리에 개정을 보여주는 오프 전환 :

document.ShowRevisions = false; 

그것은 문서 존재하는 경우에 변경 내용 추적을 유지,하지만 당신을 수 있습니다 예를 들어 최신 콘텐츠 만보고 대처해야합니다. 삭제 등.

관련 문제