| 
                         [현상과 원인]  
                        엑셀파일을 열 때 자동 실행되는 모듈을 작성시 사용하는 이벤트함수(?)가 workbook_open과 
                        auto_open이 있는 것 같은데요. 이 둘의 차이점은 뭐고 어떤 장단점이 있는 궁금합니다. 
                         
                        [방법]  
                        위의 질문은 2001-08-26에 어느 분이 올려준 질문의 내용입니다. 사실 기능적인 면에서 
                        Auto_Open 과 Workbook_Open은 차이가 없습니다. 둘 다 통합문서를 열게 되면 
                        자동으로 실행되는 프로시저입니다. 
                         
                        엑셀을 실행하면 엑셀은 자동적으로 Auto_Open 프로시저를 검색합니다. 그리고 그 프로시저가 
                        존재한다면 자동으로 실행하게 됩니다. Auto_Open의 경우 엑셀97 이전버전부터 지원된 것이고 
                        엑셀 2000 버전부터는 새롭게 Workbook_Open 이벤트 프로시저가 지원되기 시작하였다. 가장 
                        최근의 버전인 엑셀2002버전에서도 Auto_Open 과 Workbook_Open은 모두 
                        사용 가능합니다. 
                         
                        가장 먼저 눈에 띄는 차이점은 타이밍의 차이입니다. 즉 둘 다 존재한다면 어느 것이 먼저 실행될 
                        것인가 입니다. 직접 이를 확인하기 위해 엑셀97, 2000, 2002버전에서 다음과 같은 프로시저를 
                        작성하여 보았습니다.  
                        
                          
                            | 
                            AutoOpen.xls | 
                           
                          
                            | 
                             Private Sub Workbook_Open() 
                                MsgBox "Workbook_Open 이벤트 프로시저가 
                            실행되었습니다", vbInformation 
                            End Sub 
                              
                            Sub Auto_Open() 
                                MsgBox "Auto_Open 프로시저가 
                            실행되었습니다", vbInformation 
                            End Sub   | 
                           
                         
                        
                         
                        결론적으로 모든 버전에서 Workbook_Open 이벤트 프로시저가 먼저 실행되고, 다음으로 
                        Auto_Open 프로시저가 실행됩니다. 
                         
                        두 번째 차이점은 사용자가 통합문서를 직접 여는 것이 아니라 다른 통합문서에 열어 볼 때 발생합니다. 
                        다음의 코드를 작성하여 앞서 만든 AutoOpen.xls파일을 열어보았습니다.  
                        
                          
                            | 
                             TestAuto.xls  | 
                           
                          
                            | 
                             Sub 
                            OpenAutoOpen() 
                                
                            Workbooks.Open "AutoOpen.xls" 
                            End Sub  | 
                           
                         
                        이 경우 Workbook_Open 이벤트 프로시저만 실행되고 Auto_Open 프로시저는 
                        실행되지 않습니다. 
                         
                        만일 다른 통합문서를 열면서 Workbook_Open 이벤트 프로시저의 실행을 막아두려면 
                        EnableEvents 프로퍼티를 False로 줍니다.  
                        Application.EnableEvents = False  
                        Workbooks.Open(Filename:="AutoOpen.xls")
                         
                        Application.EnableEvents = True  
                           |