배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Excel 버전:   공통
검색어:   클래스
제목:   Office Class Name
     
 

New Page 2
  STEP> 따라하기


※ 아래 Daily Tip은 곽승주님이 제공해주신 내용입니다

오늘은 오피스 애플리케이션의 클래스이름을 정리하여 소개하려고 합니다. 더불어 클래스이름은 사용하는 경우도 보도록 하죠.

모든 윈도우에는 핸들이라는 고유의 정수값을 가지고 있습니다. 그리고 핸들을 이용하여 윈도우를 조정할 수 있는 거죠. 그런데 윈도우라고 하면 보통 네모난 창 모양의 대화상자나 화면만 생각하는 분들이 보통입니다. 그러나 여기에서 윈도우라는 것은 그러한 대화상자외에 대화상자내 있는 각종 컨트롤도 윈도우라고 합니다.

오피스는 많은 윈도우를 가지고 있으며 이것들은 제어할 수 있습니다. 핸들만 있다면 말이죠. 핸들을 얻기 위해서는 FindWindow와 같은 API함수를 사용해야 합니다.

다음은 이 함수를 VB/VBA에서 사용하기 위한 함수선언의 예입니다.

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

함수를 사용하기 위해 필요한 매개변수중에는 lpClassName이라는 것이 있습니다. 매개변수의 이름으로 봐서는 클래스이름을 주어야 할 것 같습니다. 클래스이름이 뭔지 잘 몰라도 말이죠.

다음은 오피스의 각각의 클래스 이름을 애플리케이션별로 정리한 것입니다.

Application Class Name
Access 97 OMain
Access 2000 OMain
Access XP OMain
Excel 97 XLMAIN
Excel 2000 XLMAIN
Excel XP XLMAIN
FrontPage 2000 FrontPageExplorerWindow40
FrontPage XP FrontPageExplorerWindow40
Outlook 97 rctrl_renwnd32
Outlook 98 rctrl_renwnd32
Outlook 2000 rctrl_renwnd32
Outlook XP rctrl_renwnd32
PowerPoint 95 PP7FrameClass
PowerPoint 97 PP97FrameClass
PowerPoint 2000  PP9FrameClass
PowerPoint XP PP10FrameClass
Project 98 JWinproj-WhimperMainClass
Project 2000 JWinproj-WhimperMainClass
Visual Basic Editor wndclass_desked_gsk
Word 97 OpusApp
Word 2000 OpusApp
Word XP OpusApp
Userform 97 ThunderXFrame
Userform 2000+ ThunderDFrame

이것을 사용하는 예를 하나 보도록 하죠. 다음은 사용자 정의 폼의 핸들을 얻으려는 예입니다. 오피스의 버전에 따라 다른 클래스이름을 주어 핸들 값을 얻습니다.

If Val(Application.VERSION) < 9 Then
    handloom = FindWindow("ThunderXFrame", Me.Caption) '// 97
Else
    hWndForm = FindWindow("ThunderDFrame", Me.Caption) '// 2000
End If