2016-10-13 3 views
2

上にあるとき、私はいくつかの一般的な句読点やスペースエラーを検出し、強調することで、私はそれらの編集を行っていた後、私は科学論文の校正支援するマクロを記述しようとしていますMS Wordで.Findを使用して二重スペース、句読点の前後のスペースが間違っているなど)。私は、Word 2010VBA - など(変更履歴の記録が

次のコードは、変更履歴の記録がオンになっていないWord文書のために、これまで正常に動作を使用しています。それは赤でTARGETLISTに含まれる文字列のインスタンスを強調:

Sub HighlightTargets2() 
Dim range As range 
Dim i As Long 
Dim TargetList 

TargetList = Array(" ", " ,", " .", " ?", " :", " ;", " -", " –", " —", "- ", "– ", "— ", ",,", "..", "::", ";;", "??", ",.", ".,", ",?", "?,", "?.", ".?", ";:", ":;", ";,", ";.", ".;", ".;", "^$(", "^$)", "(^$", "^#(", "^#)", ")^ #", "(^#") ' put list of terms to find here 
For i = 0 To UBound(TargetList) 
Set range = ActiveDocument.range 
With range.Find 
.Text = TargetList(i) 
.Format = True 
.MatchCase = True 
.MatchWholeWord = False 
.MatchWildcards = False 
.MatchSoundsLike = False 
.MatchAllWordForms = False 
Do While .Execute(Forward:=True) = True 
range.HighlightColorIndex = wdRed 
Loop 
End With 
Next 
End Sub 

問題は、私は唯一の文書のFINALビューで、このようなエラーをチェックする必要があるということです。ただし、このマクロを使用すると、ドキュメント内に「削除された」(削除されたものの、まだ受け入れられていない)文字が残っているとみなされます。あなたはこの絵で

Consider this example (ignore the yellow highlights).を見ることができるように、私は期間を追加し、セミコロンを削除することによって、元の文章を分割することを決めました。したがって、「最終:マークアップを表示」では、インターテロされた期間と削除されたセミコロンが別の(。;)ように見えます。私は「最終」ビュー(「ファイナル:表示マークアップ」ではない)で、マクロしばらく実行した場合でも、.Findメソッドは、まだテキストにあるような「削除」の文字がかかります。これは、次のような結果が発生するため、私のコードが動作しないことを意味します(次の画像を参照)。

Wrong Highlight

一つの可能​​な回避策は、単語の別のインスタンスを開いてコピーし、(明らかに、「最終」を選択した後に)ファイルからすべてのテキストを貼り付けると、単語の新しいインスタンス上のマクロを実行することです。次に、単語の新しいインスタンスで強調表示されたエラーを探し、手動でそれらを探して修正します。

.Findメソッドが唯一「ファイナル」ビューでドキュメントを表示するときに表示されるテキストで検索すると、変更履歴の記録をオンにしている間に削除されたテキストを無視させる方法はありますか?

答えて

0

Wordは変更が受け入れられるまで文書の一部に変更履歴を考慮さとして、あなたはすべてを受け入れることができ、あなたのコードを実行する前に変更追跡:オブジェクト

For Each stry In ActiveDocument.StoryRanges 
    If stry.Revisions.Count >= 1 Then _ 
    stry.Revisions.AcceptAll 
Next 
として

ます。Private Sub AcceptAllChanges() 薄暗いstryを

End Subの

+0

おかげで、しかし、私は原作者が私の修正を見ることができるように変更を受け入れずに、これらのファイルを送信する必要があります。 –

関連する問題