열린 대화 상자 감지 (Microsoft Word)
Thomas에는 시간 간격으로 다양한 기능을 수행하는 매크로가 있습니다.
이러한 기능 중 일부는 대화 상자가 화면에 열려있는 경우 수행하면 안됩니다. 수행하려고하면 기능에 오류가 발생하기 때문입니다. 그는 매크로 내에서 대화 상자 (모든 대화 상자)가 현재 열려 있는지 감지 할 수있는 방법이 있는지 궁금합니다. Thomas는 생성 된 오류를 처리하는 대신 열린 대화 상자를 감지합니다.
이를 시도하는 유일한 방법은 실제로 Windows API의 일부인 FindWindow를 사용하는 것입니다. 그 목적은 열려있는 특정 창에 대한 핸들을 검색하는 것입니다. (대화 상자는 열린 창일 뿐이며 각 대화 상자에는 이름이 있습니다.)이 접근 방식은 any 대화 상자가 열려 있는지 여부를 알려주지 않지만 specific 대화 상자가 열려 있는지 여부를 알려줍니다.
다음은 FindWindow 함수를 사용하는 방법을 보여주는 간단한 예입니다.
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal wClassName As Any, ByVal wWindowName As String) As Long Sub testDialogOpen() Dim wHandle As Long Dim wName As String wName = "Find and Replace" wHandle = FindWindow(0&, wName) If wHandle = 0 Then MsgBox "Dialog window is not open" Else MsgBox "Dialog window is open" End If End Sub
FindWindow 함수는 VBA 프로 시저 외부에서 선언해야합니다. 그런 다음 절차 내에서 찾으려는 대화 상자의 이름을 지정해야합니다. 이것은 대화 상자의 제목 표시 줄에 나타나는 이름이며 FindWindow 함수는 대소 문자를 구분하지 않습니다. FindWindow의 반환 값은 열려있는 경우 대화 상자의 핸들이됩니다. 열려 있지 않으면 함수는 0을 반환합니다.
또한 대화 상자는 모달과 비 모달의 두 가지 유형이 될 수 있습니다. 특정 대화 상자가 모달이면 시스템에서 다른 작업을 수행하기 전에 해당 대화 상자를 닫아야합니다. 열린 대화 상자가 모달인지 여부에 따라 매크로와 다른 성능을 얻을 수 있으므로 어느 시점에서 대화 상자를 사용하여 광범위한 테스트를 수행해야합니다.
_ 참고 : _
이 페이지 (또는 WordTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / wordribbon-WordTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_WordTips_는 비용 효율적인 Microsoft Word 교육을위한 소스입니다.
(Microsoft Word는 세계에서 가장 널리 사용되는 워드 프로세싱 소프트웨어입니다.)이 팁 (12356)은 Office 365의 Microsoft Word 2007, 2010, 2013, 2016, 2019 및 Word에 적용됩니다. Word의 이전 메뉴 인터페이스 :
link : / word-Detecting_an_Open_Dialog_Box [열린 대화 상자 감지]
.