2017-03-10 5 views
0

여러 페이지의 긴 단어 목록을 사용하여 별도 저장 한 문서 파일에 액세스하는 Word의 매크로 작업 중입니다. 단어 목록 문서는 줄 바꿈으로 각 단어를 분리하는 ...Word 2016/VBA 단어 목록에서 각 단어의 첫 번째 사용 강조 표시

FMS

CPR

ABC 방송

, 같은 형식입니다.

매크로는 목록에서 각 단어의 첫 번째 사용을 강조 표시해야합니다.

매크로는 모든 단어 사용을 강조 표시하고 추가로 다른 단어의 일부일 때 해당 단어를 강조 표시합니다. 예를 들어 freeze라는 단어에서 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 

답변

0

해보십시오 wdReplaceOne 대신 wdReplaceAll.

.MatchWholeWord = True는 포함 된 문자열을 강조 표시하지 않아야하지만 무시되는 것으로 보입니다.

원래 코드를 ThisDocument 뒤에있는 모듈에서 테스트하고 MatchWholeWord 매개 변수를 무시하고 check 문서의 마지막 문자열 만 모든 인스턴스를 강조 표시했습니다. 제안 된 편집 후 코드는 check 문서의 마지막 문자열 만 첫 번째로 강조 표시합니다. 이제는 일할 수있는 절차를 얻을 수 없습니다. 실행되지만 단어는 강조 표시되지 않습니다. Word에서 VBA를 사용한 적이 없습니다. 희망이 변경 사항은 당신을 위해 작동합니다.

+0

감사합니다. 예, wdReplaceOne으로 변경하려고 시도했습니다. 예, 강조 표시하지 않는 것처럼 보였습니다. 나는 그것이 replaceone으로 수표 문서의 첫 단어 만 찾아서 대체한다고 가정합니다. 비록 내가 wdFindContinue가 모든 사용 가능한 단어를 반복하도록 만들었지 만. – bblave

+0

루핑 중입니다. 중단 점 및 스테핑 코드로 확인했습니다. 내 테스트의 두 버전 모두 검사 목록의 마지막 단어 만 강조 표시되었습니다. 그리고 여전히 목록을 반복하면서 아무 것도 강조 표시하지 않았습니다. 나는 곤두박질 친다. – June7

+0

또 다른 테스트를했습니다. 이번에는 WordPad 대신 Word를 사용하여 Check 문서를 만들었습니다. 추천 된 편집 코드가 완벽하게 작동했습니다. 아직도 난처한. – June7