요약
이 단계별 문서에서는 Visual Basic 6.0을 사용하여 Excel 통합 문서에서 매크로 이름을 검색하는 방법을 설명합니다.
요구 사항
다음 항목에서는 필요한 권장 하드웨어, 소프트웨어, 네트워크 인프라, 기술 및 지식 및 서비스 팩에 대해 설명합니다.
- Excel 2000, Excel 2002, Office Excel 2003 또는 Office Excel 2007
- Excel 매크로
- Visual Basic for Applications
두 개의 매크로가 있는 Excel 통합 문서 만들기
Excel을 시작합니다. 새 빈 통합 문서가 만들어집니다.
Alt+F11을 눌러 Visual Basic 편집기를 시작합니다.
프로젝트 탐색기에서 ThisWorkbook 을 두 번 클릭하여 코드 편집기를 시작합니다.
코드 편집기에서 두 개의 간단한 매크로에 다음 코드를 붙여넣습니다.
Option Explicit Sub Macro_A() MsgBox "This is Macro A" End Sub Sub Macro_B() MsgBox "This is Macro B" End Sub
Visual Basic Editor를 닫고 스프레드시트 보기로 돌아갑니다.
Excel 2003 및 이전 버전의 Excel에서 통합 문서를 C:\Abc.xls 저장합니다.
Excel 2007에서 통합 문서를 C:\Abc.xlsm이라는 매크로 사용 통합 문서로 저장합니다.
통합 문서를 닫고 Excel을 종료합니다.
통합 문서의 매크로를 나열하는 Visual Basic 애플리케이션 만들기
Visual Basic 6.0에서 새 표준 EXE 프로젝트를 만듭니다.
프로젝트 메뉴에서 참조를 클릭합니다. 참조 대화 상자에서 다음 참조를 선택합니다.
- Microsoft Visual Basic for Applications 확장성 5.3
- Microsoft Excel 2000: Microsoft Excel 9.0 개체 라이브러리
- Microsoft Excel 2002: Microsoft Excel 10.0 개체 라이브러리
- Microsoft Office Excel 2003: Microsoft Excel 11.0 개체 라이브러리
- Microsoft Office Excel 2007: Microsoft Excel 12.0 개체 라이브러리
확인을 클릭합니다.
폼에 단추를 추가합니다. 단추에는 기본 이름 Command1이 있습니다.
양식에 목록 상자를 추가합니다. 목록 상자에는 기본 이름 List1이 있습니다.
단추에 대한 클릭 이벤트 처리기 프로시저를 정의합니다. 이 프로시저에 대해 다음 코드를 사용하여 C:\Abc.xls 정의된 매크로에 대한 정보를 표시합니다.
Private Sub Command1_Click() ' Declare variables to access the Excel workbook. Dim objXLApp As Excel.Application Dim objXLWorkbooks As Excel.Workbooks Dim objXLABC As Excel.Workbook ' Declare variables to access the macros in the workbook. Dim objProject As VBIDE.VBProject Dim objComponent As VBIDE.VBComponent Dim objCode As VBIDE.CodeModule ' Declare other miscellaneous variables. Dim iLine As Integer Dim sProcName As String Dim pk As vbext_ProcKind ' Open Excel, and open the workbook. Set objXLApp = New Excel.Application Set objXLWorkbooks = objXLApp.Workbooks Set objXLABC = objXLWorkbooks.Open("C:\ABC.XLS") ' Empty the list box. List1.Clear ' Get the project details in the workbook. Set objProject = objXLABC.VBProject ' Iterate through each component in the project. For Each objComponent In objProject.VBComponents ' Find the code module for the project. Set objCode = objComponent.CodeModule ' Scan through the code module, looking for procedures. iLine = 1 Do While iLine < objCode.CountOfLines sProcName = objCode.ProcOfLine(iLine, pk) If sProcName <> "" Then ' Found a procedure. Display its details, and then skip ' to the end of the procedure. List1.AddItem objComponent.Name & vbTab & sProcName iLine = iLine + objCode.ProcCountLines(sProcName, pk) Else ' This line has no procedure, so go to the next line. iLine = iLine + 1 End If Loop Set objCode = Nothing Set objComponent = Nothing Next Set objProject = Nothing ' Clean up and exit. objXLABC.Close objXLApp.Quit End Sub
샘플 테스트
- 애플리케이션을 빌드하고 실행합니다.
- 명령 단추를 클릭합니다. 목록 상자에는 모든 매크로의 이름과 매크로가 포함된 통합 문서의 이름이 다음과 같이 표시됩니다. ThisWorkbook Macro_A ThisWorkbook Macro_B
문제 해결
Excel 2002, Excel 2003 및 Excel 2007의 향상된 보안 프로비전으로 인해 Excel 2002, Excel 2003 또는 Excel 2007을 사용할 때 Visual Basic 프로그램에서 다음 오류 메시지가 표시될 수 있습니다. Visual Basic 프로젝트에 대한 프로그래밍 방식 액세스를 신뢰할 수 없습니다.
이 문제 및 해결 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료의 문서를 확인합니다.
282830 PRB: Office XP VBA 프로젝트에 대한 프로그래밍 방식 액세스가 거부됨
참조
자세한 내용은 다음 MSDN(Microsoft Developer Network) 웹 사이트를 참조하세요.
Visual Studio를 사용한 Microsoft Office 개발
자세한 내용은 다음 기술 자료 문서를 참조하십시오.
219905 Visual Basic에서 VBA 매크로를 동적으로 추가하고 실행하는 방법