2009-04-15 13 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

私はスルーループしてしまいました各リビジョンなどのような非削除コメントと区別するために削除されたリビジョンのフォントの色を変更する:

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

それから私が見つけることを行うことができますし、違った意見を扱うDそのフォントの色にepending:前Word文書を検索したり、処理する改定を示すオフにする

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

試してみてください。

document.ShowRevisions = false; 

を存在する場合には、文書で変更の追跡を維持していますが、にすることができます最新のコンテンツのみを参照して対処する削除など。

関連する問題