2017-06-06 13 views
0

私は特別な単語のリストである.txtファイルを持っています。テキストファイルを読み込み、文字列の行1をテキストファイルから削除し、ファイルの終わりまで繰り返します。このコードは機能しますが、最初の文字列の最初の文字列しか見つからず、後続の文字列の最初の文字列が見つかりません。エラーはありません。私は、行が読み取られていることを知っています(msgbox mystringのコメントを外して、各文字列をテキストファイルに表示します)。私は間違って何をしていますか?MS Word VBA、文字列の最初の出現をハイライト表示するコード

Sub acronym_highlighter() 

Dim MyString As String 
Dim MyAcroFileName As String 

'Ask user for name of file 
MyAcroFileName = InputBox("Enter the filename containg the acronyms. This file MUST be .txt format:", vbOKOnly, "Enter file name") 

Open MyAcroFileName For Input As #1 

'loop through the file until the end of file marker 
'is reached 
Do While Not EOF(1) 
    'read line of text, place it in the MyString variable 
    Line Input #1, MyString 
    ' MsgBox MyString 

    Options.DefaultHighlightColorIndex = wdYellow 
    Selection.Find.Replacement.Highlight = True 

    With Selection.Find 
     .Text = MyString 
     .Replacement.Text = MyString 
    End With 
     Selection.Find.Execute Replace:=wdReplaceOne 
Loop 

'close the text file 
Close #1 
End Sub 

答えて

0

これSelection.Find.Executeは、このように予期しない結果が得られ、文書内の実際のSelectionRange)変更されると思われます。 の最初のの反復の後に、Selectionは、置き換えられたばかりの単語になります。それ以上のことはありません。そして明らかに他の単語は見つかりません。の単語のRangeです。

あなたは同じように、ドキュメント全体にスコープされていることを確認します

Do While Not EOF(1) 
    'read line of text, place it in the MyString variable 
    Line Input #1, MyString 
    'Reset the Range object to the entire current document 
    Set rng = ActiveDocument.Range 
    rng.Find.Replacement.Highlight = True 
    With rng.Find 
     .Text = myString 
     .Replacement.Text = myString 
     .Execute Replace:=wdReplaceOne 
    End With 
Loop 
関連する問題