키워드를 기반으로 매크로 실행 (Microsoft Word)
Eyal은 사용자가 특정 단어 나 구를 입력하면 자동으로 매크로를 실행할 수있는 방법이 있는지 궁금합니다.
불행히도 문서에 텍스트를 입력 할 때이를 감지하는 Word VBA 이벤트 프로 시저가 없습니다. 그러나 Word는 완전한 단어가 입력되는시기를 내부적으로 감지하여 맞춤법 검사, 자동 고침 및 단어 수 업데이트와 같은 작업을 수행 할 수 있습니다. 그러나이 내부 탐지 방법을 이용할 수는 없습니다.
아마도 가장 좋은 방법은 VBA의 타이머 기능을 사용하여 단어가 입력되었는지 확인하는 것입니다. (기억하십시오 —Word는 단어가 완성 될 때마다 단어 수를 내부적으로 업데이트하므로 타이머 코드는 단어 수가 변경되었는지 확인하기 위해 단어 수를 모니터링 할 수 있습니다.) OnTime 메서드에는 최소 1 초 설정이 있습니다. 기반 코드는 초당 한 번만 실행할 수 있습니다. 빠른 타이피스트는 초당 한 단어 이상을 입력 할 수 있으므로 코드는 실제로 마지막으로 입력 된 몇 단어를 확인해야합니다.
다음은 사용할 수있는 코드입니다.
Dim wCount As Long Dim aRange As Range Dim tWords Dim inactiveSW As Boolean Sub InitializeTimer() tWords = Array("APPLE", "ORANGE", "PEAR") wCount = ActiveDocument.Words.Count Set aRange = Selection.Range aRange.Start = ActiveDocument.Range.Start inactiveSW = False StartTimer End Sub
Public Sub StartTimer() Application.OnTime When:=Now + TimeValue("00:00:01"), _ Name:="TestWords" End Sub
Public Sub TestWords() Dim testWord As String Dim i As Long Dim k As Long Dim kw As Long Dim xc As Long If inactiveSW Then Exit Sub With ActiveDocument xc = .Range.Words.Count - wCount If xc > 0 And xc < 5 Then aRange.End = Selection.End kw = aRange.Words.Count - 1 If kw > 0 Then For k = kw - xc + 1 To kw testWord = UCase(Trim(aRange.Words(k).Text)) For i = 0 To UBound(tWords) If testWord = tWords(i) Then mysub (testWord) Exit For End If Next i Next k End If End If wCount = .Range.Words.Count End With StartTimer End Sub
Public Sub KillOnTime() 'cannot stop the timer so set inactive switch inactiveSW = True End Sub
Sub mysub(s As String) ' this subroutine is executed when a special word is entered MsgBox s End Sub
실행해야하는 첫 번째 루틴은 InitializeTimer 매크로입니다. OnTime 메서드를 실제로 시작하기 전에 필요한 변수를 설정합니다. 그런 다음 TestWords 매크로를 실행하는 타이머를 실제로 설정하는 StartTimer 매크로를 호출합니다.
TestWords는 단어 수가 증가했는지 확인하고, 증가한 경우 입력 한 마지막 5 개 단어가 트리거 단어와 일치하는지 확인합니다. (트리거 단어는 InitializeTimer 매크로에서 tWords 배열에 설정됩니다. 배열에 모두 대문자로 입력해야합니다.) 트리거 단어가 감지되면 코드 (mysub)가 실행되고 트리거 단어가 전달됩니다. 귀하의 코드에.
특히 텍스트를 문서에 붙여 넣는 경우 단어 수가 5 개 이상 증가 할 수 있습니다. 문서에 붙여 넣을 수있는 모든 단어를 코드로 확인하려면 확인 코드 줄을 변경해야합니다.
If xc > 0 And xc < 5 Then
다음과 같이 변경하기 만하면됩니다.
If xc > 0 Then
단어 검사를 중지하려면 단어 검사를 중지하는 플래그를 설정하는 KillOnTime 매크로를 실행합니다. 나중에 확인을 다시 시작하려면 InitializeTimer를 다시 실행하십시오.
_ 참고 : _
이 페이지 (또는 WordTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / wordribbon-WordTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_WordTips_는 비용 효율적인 Microsoft Word 교육을위한 소스입니다.
(Microsoft Word는 세계에서 가장 널리 사용되는 워드 프로세싱 소프트웨어입니다.)이 팁 (12375)은 Office 365의 Microsoft Word 2007, 2010, 2013, 2016, 2019 및 Word에 적용됩니다. Word의 이전 메뉴 인터페이스 :
link : / word-Running_Macros_Based_on_Keywords [키워드 기반 매크로 실행]
.