연습: Visual Basic 프로젝트에서 VBA의 코드 호출
이 연습에서는 문서의 VBA(Visual Basic for Applications) 코드에서 Microsoft Office Word용 문서 수준 사용자 지정의 메서드를 호출하는 방법을 보여 줍니다. 이 절차에서는 ThisDocument 호스트 항목 클래스에 메서드를 추가하고, VBA 코드에 메서드를 노출하고, 문서의 VBA 코드에서 메서드를 호출하는 세 단계로 작업을 수행합니다.
적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010, Word 2007 및 Word 2010의 문서 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
이 연습에서는 Word만 사용하지만 연습에서 보여 주는 기본 개념은 Excel용 문서 수준 프로젝트에도 적용됩니다.
이 연습에서는 다음 작업을 수행합니다.
VBA 코드가 포함된 문서 만들기
Word의 보안 센터를 사용하여 문서 위치 신뢰
ThisDocument 호스트 항목 클래스에 메서드 추가
VBA 코드에 메서드 노출
VBA 코드에서 메서드 호출
참고
일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 설치한 Visual Studio 버전과 사용하는 설정에 따라 이러한 요소가 결정됩니다. 자세한 내용은 설정에 대한 작업을 참조하십시오.
관련 비디오 데모를 보려면 How Do I: Call VSTO Code from VBA?를 참조하십시오.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
-
Microsoft Office 개발자 도구를 포함하는 Visual Studio 2010 버전입니다. 자세한 내용은 [Office 솔루션을 개발할 수 있도록 컴퓨터 구성](bb398242\(v=vs.100\).md)을 참조하십시오.
- Word 2007 또는 Word 2010
VBA 코드가 포함된 문서 만들기
첫 번째 단계에서는 간단한 VBA 매크로가 포함된 매크로 사용 문서를 만듭니다. 해당 문서를 기반으로 하는 Visual Studio 프로젝트를 만들려면 먼저 해당 문서에 VBA 프로젝트를 포함해야 합니다. 그렇지 않으면 Visual Studio에서는 VBA 코드가 사용자 지정 어셈블리를 호출할 수 있도록 VBA 프로젝트를 수정할 수 없습니다.
사용할 VBA 코드가 들어 있는 문서가 이미 있는 경우 이 단계를 건너뜁니다.
VBA 코드가 포함된 문서를 만들려면
Word를 시작합니다.
활성 문서를 DocumentWithVBA라는 이름의 **Word 매크로 사용 문서 (*.docm)**로 저장합니다. 문서를 데스크톱 등의 편리한 위치에 저장합니다.
리본 메뉴에서 개발 도구 탭을 클릭합니다.
참고
개발 도구 탭이 표시되지 않으면 먼저 이 탭을 표시해야 합니다. 자세한 내용은 방법: 리본 메뉴에 개발 도구 탭 표시를 참조하십시오.
코드 그룹에서 Visual Basic을 클릭합니다.
Visual Basic 편집기가 열립니다.
프로젝트 창에서 ThisDocument를 두 번 클릭합니다.
ThisDocument 개체의 코드 파일이 열립니다.
코드 파일에 다음 VBA 코드를 추가합니다. 이 코드에서는 아무런 작업도 수행하지 않는 간단한 함수를 정의합니다. 이 함수는 오직 문서에 VBA 프로젝트를 포함하기 위한 것으로서, 이 연습의 이후 단계에서 필요합니다.
Sub EmptySub() End Sub
문서를 저장하고 Word를 종료합니다.
프로젝트 만들기
이제 앞에서 만든 매크로 사용 문서를 사용하는 Word용 문서 수준 프로젝트를 만들 수 있습니다.
새 프로젝트를 만들려면
Visual Studio를 시작합니다.
파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다. IDE가 Visual Basic 개발 설정을 사용하도록 설정된 경우 파일 메뉴에서 새 프로젝트를 클릭합니다.
템플릿 창에서 Visual Basic을 확장한 다음 Office를 확장합니다.
2010 또는 2007 노드를 선택합니다.
프로젝트 템플릿 목록에서 Word 문서 프로젝트를 선택합니다.
이름 상자에 CallingCodeFromVBA를 입력합니다.
확인을 클릭합니다.
Visual Studio Tools for Office 프로젝트 마법사가 열립니다.
기존 문서 복사를 선택하고 기존 문서의 전체 경로 상자에서 앞에서 만든 DocumentWithVBA 문서의 위치를 지정합니다. 사용자 고유의 매크로 사용 문서를 사용하려면 대신 이 문서의 위치를 지정합니다.
마침을 클릭합니다.
Visual Studio의 디자이너에서 DocumentWithVBA 문서가 열리고 솔루션 탐색기에 CallingCodeFromVBA 프로젝트가 추가됩니다.
문서 위치 신뢰
문서의 VBA 코드에 솔루션의 코드를 노출하려면 먼저 실행할 문서의 VBA를 신뢰해야 합니다. 다음과 같은 방법으로 이 작업을 수행할 수 있습니다. 이 연습에서는 Word의 보안 센터에서 문서의 위치를 신뢰합니다.
문서의 위치를 신뢰하려면
Word를 시작합니다.
파일 탭(Word 2010의 경우) 또는 Microsoft Office 단추(Word 2007의 경우)를 클릭합니다.
Word 옵션 단추를 클릭합니다.
범주 창에서 보안 센터를 클릭합니다.
세부 정보 창에서 보안 센터 설정을 클릭합니다.
범주 창에서 신뢰할 수 있는 위치를 클릭합니다.
세부 정보 창에서 새 위치 추가를 클릭합니다.
신뢰할 수 있는 Microsoft Office 위치 대화 상자에서 CallingCodeFromVBA 프로젝트가 포함된 폴더를 찾습니다.
이 위치의 하위 폴더도 신뢰할 수 있음을 선택합니다.
신뢰할 수 있는 Microsoft Office 위치 대화 상자에서 확인을 클릭합니다.
보안 센터 대화 상자에서 확인을 클릭합니다.
Word 옵션 대화 상자에서 확인을 클릭합니다.
Word를 종료합니다.
ThisDocument 클래스에 메서드 추가
VBA 프로젝트를 설정했으므로 이제 VBA 코드에서 호출할 수 있는 ThisDocument 호스트 항목 클래스에 메서드를 추가합니다.
ThisDocument 클래스에 메서드를 추가하려면
솔루션 탐색기에서 ThisDocument.vb를 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.
ThisDocument.vb 파일이 코드 편집기에서 열립니다.
ThisDocument 클래스에 다음 메서드를 추가합니다. 이 메서드는 문서의 처음 부분에 두 개의 행과 두 개의 열로 구성된 표를 만듭니다. 매개 변수는 첫 번째 행에 표시되는 텍스트를 지정합니다. 이 연습의 뒷부분에서는 문서의 VBA 코드에서 이 메서드를 호출합니다.
Public Sub CreateTable(ByVal firstColumnHeader As String, _ ByVal secondColumnHeader As String) Me.Paragraphs(1).Range.InsertParagraphBefore() Dim table1 As Word.Table = Me.Tables.Add(Me.Paragraphs(1).Range, 2, 2) With table1 .Style = "Table Professional" .Cell(1, 1).Range.Text = firstColumnHeader .Cell(1, 2).Range.Text = secondColumnHeader End With End Sub
프로젝트를 빌드합니다.
VBA 코드에 메서드 노출
문서의 VBA 코드에 CreateTable 메서드를 노출하려면 ThisDocument 호스트 항목의 EnableVbaCallers 속성을 True로 설정합니다.
VBA 코드에 메서드를 노출하려면
솔루션 탐색기에서 ThisDocument.vb를 두 번 클릭합니다.
DocumentWithVBA 파일이 디자이너에서 열립니다.
속성 창에서 EnableVbaCallers 속성을 선택하고 값을 True로 변경합니다.
메시지가 표시되면 확인을 클릭합니다.
프로젝트를 빌드합니다.
VBA 코드에서 메서드 호출
이제 문서의 VBA 코드에서 CreateTable 메서드를 호출할 수 있습니다.
참고
이 연습에서는 프로젝트를 디버깅하는 동안 문서에 VBA 코드를 추가합니다. 이 문서에 추가하는 VBA 코드는 다음에 프로젝트를 빌드할 때 덮어쓰여집니다. Visual Studio에서는 빌드 출력 폴더의 문서가 주 프로젝트 폴더의 문서 복사본으로 대체되기 때문입니다. VBA 코드를 저장하려면 프로젝트 폴더의 문서에 VBA 코드를 복사합니다. 자세한 내용은 VBA에서 문서 수준 사용자 지정의 코드 호출을 참조하십시오.
VBA 코드에서 메서드를 호출하려면
F5 키를 눌러 프로젝트를 실행합니다.
개발 도구 탭의 코드 그룹에서 Visual Basic을 클릭합니다.
Visual Basic 편집기가 열립니다.
삽입 메뉴에서 모듈을 클릭합니다.
새 모듈에 다음 코드를 추가합니다.
이 코드는 사용자 지정 어셈블리의 CreateTable 메서드를 호출합니다. 매크로는 ThisDocument 개체의 CallVSTOAssembly 속성을 사용하여 이 메서드에 액세스합니다. 이 연습의 앞부분에서 EnableVbaCallers 속성을 설정한 경우 이 속성은 자동으로 생성됩니다.
Sub CreateTable() Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date") End Sub
F5 키를 누릅니다.
새 표가 문서에 추가되었는지 확인합니다.
변경 내용을 저장하지 않고 Word를 종료합니다.
다음 단계
다음 항목에서는 VBA에서 Office 솔루션의 코드를 호출하는 과정에 대해 알아볼 수 있습니다.
VBA에서 Visual C# 사용자 지정의 코드를 호출합니다. 이 프로세스는 Visual Basic 프로세스와 다릅니다. 자세한 내용은 연습: Visual C# 프로젝트에서 VBA의 코드 호출을 참조하십시오.
VBA에서 응용 프로그램 수준 추가 기능의 코드를 호출합니다. 자세한 내용은 연습: VBA에서 응용 프로그램 수준 추가 기능의 코드 호출을 참조하십시오.
참고 항목
작업
방법: Visual Basic 프로젝트에서 VBA로 코드 노출
방법: Visual C# 프로젝트에서 VBA로 코드 노출
연습: Visual C# 프로젝트에서 VBA의 코드 호출