複数のページの長い単語リストを持つ個別に保存されたドキュメントファイルにアクセスするWordのマクロを作成しています。単語リストドキュメントは改行で各単語を区切るために...Word 2016/VBA単語リストの各単語の最初の使用を強調表示します。
FMS
CPR
Abcの
、同じようにフォーマットされます。
マクロは、リストから各単語の最初の使用を強調表示する必要があります。
今、マクロは単語の使用をすべて強調表示し、さらにその単語が別の単語の一部であるときにハイライト表示します。たとえば、フリーズという単語のEZEをハイライト表示しますが、ezeが単独で表示されている場合にのみ強調表示する必要があります。
1.最初にハイライトし、 をハイライトすることができます。2.実際の単語を捕まえていることを確認するにはどうすればいいですか?私はVBAでそれが起こるように見えることはできません。 私の現在のコード:
Sub TD()
'
Dim sCheckDoc As String
Dim docRef As Document
Dim docCurrent As Document
Dim wrdRef As String
Dim wrdPara As Paragraph
sCheckDoc = "c:\check.docx"
Set docCurrent = Selection.Document
Set docRef = Documents.Open(sCheckDoc)
docCurrent.Activate
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Replacement.Highlight = True
.Replacement.Text = "^&"
.Forward = True
.Format = True
.MatchWholeWord = True
.MatchCase = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
For Each wrdPara In docRef.Paragraphs
wrdRef = wrdPara.Range.Text
If Asc(Left(wrdRef, 1)) > 32 Then
' remove the paragraph mark:
wrdRef = Left(wrdRef, Len(wrdRef) - 1)
With Selection.Find
.Wrap = wdFindContinue
.Text = wrdRef
.Execute Replace:=wdReplaceAll
End With
End If
Next wrdPara
docRef.Close
docCurrent.Activate
End Sub
ありがとうございました。ええ、私はwdReplaceOneに変更しようとしましたが、それは強調表示されないように見えました。私は、それが見つかったと仮定してチェック文書の最初の単語だけをreplaceoneと置き換えます。 wdFindContinueはすべての利用可能な単語をループさせると思っていましたが。 – bblave
ループしているので、ブレークポイントとステッピングコードで確認しました。私のテストの両方のバージョンでは、チェックリストの最後の単語だけが強調表示されていました。そしてそれはまだリストをループしていたものの、何かを強調表示していませんでした。私は困惑している。 – June7
もう一度テストしました。今回は、WordPadの代わりにWordでCheck Docを作成しました。推奨編集のコードは完全に機能しました。まだ困った。 – June7