이 연습에서는 VSTO 추가 기능의 개체를 VBA(Visual Basic for Applications) 및 COM VSTO 추가 기능을 비롯한 다른 Microsoft Office 솔루션에 노출하는 방법을 보여 줍니다.
적용 대상: 이 항목의 정보는 VSTO 추가 기능 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 유형에서 사용할 수 있는 기능을 참조하세요.
이 연습에서는 특히 Excel을 사용하지만 연습에서 보여 준 개념은 Visual Studio에서 제공하는 모든 VSTO 추가 기능 프로젝트 템플릿에 적용할 수 있습니다.
이 연습에서는 다음 작업을 수행합니다.
다른 Office 솔루션에 노출될 수 있는 클래스 정의
클래스를 다른 Office 솔루션에 노출합니다.
VBA 코드에서 클래스의 메서드를 호출합니다.
비고
일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 IDE 개인 설정을 참조하세요.
필수 조건
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
Microsoft Office 개발자 도구가 포함된 Visual Studio 버전입니다. 자세한 내용은 Office 솔루션을 개발하도록 컴퓨터 구성을 참조하세요.
Microsoft Excel
VSTO 추가 기능 프로젝트 만들기
첫 번째 단계는 Excel용 VSTO 추가 기능 프로젝트를 만드는 것입니다.
새 프로젝트를 만들려면
Excel VSTO 추가 기능 프로젝트 템플릿을 사용하여 ExcelImportData라는 이름으로 Excel VSTO 추가 기능 프로젝트를 만듭니다. 자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하세요.
Visual Studio에서 ThisAddIn.cs 또는 ThisAddIn.vb 코드 파일을 열고 솔루션 탐색기에ExcelImportData 프로젝트를 추가합니다.
다른 Office 솔루션에 노출할 수 있는 클래스 정의
이 연습의 목적은 VBA 코드에서 VSTO 추가 기능의 ImportData 클래스에 명명된 AddInUtilities 메서드를 호출하는 것입니다. 이 메서드는 현재 워크시트의 셀 A1에 문자열을 씁니다.
클래스를 AddInUtilities 다른 Office 솔루션에 노출하려면 클래스를 공용으로 만들고 COM에 표시해야 합니다. 또한 클래스에서 IDispatch 인터페이스를 노출해야 합니다. 다음 절차의 코드는 이러한 요구 사항을 충족하는 한 가지 방법을 보여 줍니다. 자세한 내용은 다른 Office 솔루션의 VSTO 추가 기능에서 코드 호출을 참조하세요.
다른 Office 솔루션에 노출할 수 있는 클래스를 정의하려면
프로젝트 메뉴에서 클래스 추가를 클릭합니다.
새 항목 추가 대화 상자에서 새 클래스의 이름을 AddInUtilities로 변경하고 추가를 클릭합니다.
AddInUtilities.cs 또는 AddInUtilities.vb 파일이 코드 편집기에서 열립니다.
파일 맨 위에 다음 지시문을 추가합니다.
클래스를
AddInUtilities다음 코드로 바꿉다.[ComVisible(true)] public interface IAddInUtilities { void ImportData(); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] public class AddInUtilities : IAddInUtilities { // This method tries to write a string to cell A1 in the active worksheet. public void ImportData() { Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet; if (activeWorksheet != null) { Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing); range1.Value2 = "This is my data"; } } }이 코드는 COM에
AddInUtilities클래스를 표시하고 클래스에ImportData메서드를 추가합니다. IDispatch 인터페이스AddInUtilities를 노출하기 위해 클래스에는 ClassInterfaceAttribute 특성도 있으며 COM에 표시되는 인터페이스를 구현합니다.
다른 Office 솔루션에 클래스 노출
AddInUtilities 클래스를 다른 Office 솔루션에 노출하려면 ThisAddIn 클래스에서 RequestComAddInAutomationService 메서드를 재정의하십시오. 재정의할 때 AddInUtilities 클래스의 인스턴스를 반환하십시오.
다른 Office 솔루션에 AddInUtilities 클래스를 노출하려면
솔루션 탐색기에서 Excel을 확장합니다.
ThisAddIn.cs 또는 ThisAddIn.vb 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.
클래스에 다음 코드를 추가합니다
ThisAddIn.빌드 메뉴에서 솔루션 빌드를 클릭합니다.
솔루션이 오류 없이 빌드되는지 확인합니다.
VSTO 추가 기능 테스트
여러 유형의 Office 솔루션에서 클래스를 AddInUtilities 호출할 수 있습니다. 이번 안내서에서는 Excel 통합 문서에서 VBA 코드를 사용합니다. 사용할 수 있는 다른 유형의 Office 솔루션에 대한 자세한 내용은 다른 Office 솔루션의 VSTO 추가 기능에서 통화 코드를 참조하세요.
VSTO 추가 기능을 테스트하려면
F5 키를 눌러 프로젝트를 실행합니다.
Excel에서 현재 통합 문서를 매크로 사용 Excel 통합 문서 (*.xlsm)로 저장합니다. 바탕 화면과 같은 편리한 위치에 저장합니다.
리본에서 [개발자 ] 탭을 클릭합니다.
비고
개발자 탭이 표시되지 않으면 먼저 표시해야 합니다. 자세한 내용은 방법: 리본 메뉴에 개발자 탭 표시를 참조하세요.
코드 그룹에서 Visual Basic을 클릭합니다.
Visual Basic Editor가 열립니다.
프로젝트 창에서 ThisWorkbook을 두 번 클릭합니다.
개체의
ThisWorkbook코드 파일이 열립니다.코드 파일에 다음 VBA 코드를 추가합니다. 이 코드는 먼저 ExcelImportData VSTO 추가 기능을 나타내는 COMAddIn 개체를 가져옵니다. 그런 다음 코드는 COMAddIn 개체의 Object 속성을 사용하여 메서드를 호출합니다
ImportData.Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationObject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End SubF5 누릅니다.
새로운 Imported Data 시트가 통합 문서에 추가되었는지 확인합니다. 또한 A1 셀에 내 데이터인 문자열 이 포함되어 있는지 확인합니다.
Excel을 종료합니다.
다음 단계
다음 항목에서 VSTO 추가 기능을 프로그래밍하는 방법에 대해 자세히 알아볼 수 있습니다.
클래스를
ThisAddIn사용하여 호스트 애플리케이션을 자동화하고 VSTO 추가 기능 프로젝트에서 다른 작업을 수행합니다. 자세한 내용은 프로그램 VSTO 추가 기능을 참조하세요.VSTO 추가 기능에서 사용자 지정 작업창을 만듭니다. 자세한 내용은 사용자 지정 작업창 및 방법: 애플리케이션에 사용자 지정 작업창 추가를 참조하세요.
VSTO 추가 기능에서 리본을 커스터마이즈합니다. 자세한 내용은 리본 개요 및 방법: 리본 사용자 지정을 시작하세요.