Visual Studio는 Microsoft Office 프로그래밍을 개선하는 Visual Basic의 기능을 제공합니다. Visual Basic의 기능으로는 자동 구현 속성, 람다 식의 문, 컬렉션 이니셜라이저 등이 있습니다. 사용자 컴퓨터에 기본 INTEROP 어셈블리(PIA)를 배포하지 않고도 COM 구성 요소와 상호 작용하는 어셈블리를 배포할 수 있는 형식 정보를 포함할 수 있습니다. 자세한 내용은 연습: 관리되는 어셈블리의 형식 포함을 참조하세요.
이 연습에서는 Office 프로그래밍과 관련해서 이러한 기능을 설명하지만 대부분 일반 프로그래밍에서도 유용합니다. 연습에서는 Excel 추가 기능 애플리케이션을 사용하여 Excel 통합 문서를 만듭니다. 그런 다음 통합 문서 링크를 포함하는 Word 문서를 만듭니다. 마지막으로 PIA 종속성을 사용 및 사용하지 않도록 설정하는 방법을 알아봅니다.
사전 요구 사항
이 연습을 완료하려면 Microsoft Office Excel 및 Microsoft Office Word가 컴퓨터에 설치되어 있어야 합니다.
참고
일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 IDE 개인 설정을 참조하세요.
Excel 추가 기능 애플리케이션 설정
Visual Studio를 시작합니다.
파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.
설치된 템플릿 창에서 Visual Basic을 확장하고 Office를 확장한 다음 Office 제품의 버전 연도를 클릭합니다.
템플릿 창에서 Excel <버전> 추가 기능을 클릭합니다.
템플릿 창 위쪽의 대상 프레임워크 상자에 .NET Framework 4 이상 버전이 표시되어 있는지 확인합니다.
원하는 경우 이름 상자에 프로젝트의 이름을 입력합니다.
확인을 클릭합니다.
솔루션 탐색기에 새 프로젝트가 표시됩니다.
참조 추가
솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 참조 추가를 클릭합니다. 참조 추가 대화 상자가 나타납니다.
어셈블리 탭의 구성 요소 이름 목록에서 Microsoft.Office.Interop.Excel, 버전
<version>.0.0.0(Office 제품 버전 번호에 대한 자세한 내용은 Microsoft 버전 참조)을 선택하고 Ctrl 키를 누른 상태로 Microsoft.Office.Interop.Word,version <version>.0.0.0을 선택합니다. 이러한 어셈블리가 보이지 않으면 어셈블리가 설치되어 있으며 표시되는지를 확인해야 할 수 있습니다(방법: Office 주 Interop 어셈블리 설치 참조).확인을 클릭합니다.
필요한 Imports 문 또는 using 지시문 추가
솔루션 탐색기에서 ThisAddIn.vb 또는 ThisAddIn.cs 파일을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.
코드 파일이 아직 없는 경우 다음
Imports문을 코드 파일의 맨 위에 추가합니다.Imports Microsoft.Office.Interop
은행 계좌 목록 만들기
솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 추가를 클릭한 다음 클래스를 클릭합니다. 클래스 이름을 Account.vb로 지정합니다. 추가를 클릭합니다.
Account클래스 정의를 다음 코드로 바꿉니다. 클래스 정의는 자동으로 구현된 속성을 사용합니다. 자세한 내용은 자동으로 구현된 속성을 참조하세요.Public Class Account Property ID As Integer = -1 Property Balance As Double End Class두 계정이 포함된 목록을 만들
bankAccounts려면 ThisAddIn.vb의ThisAddIn_Startup메서드에 다음 코드를 추가합니다. 목록 선언은 컬렉션 이니셜라이저를 사용합니다. 자세한 내용은 컬렉션 이니셜라이저를 참조하세요.Dim bankAccounts As New List(Of Account) From { New Account With { .ID = 345, .Balance = 541.27 }, New Account With { .ID = 123, .Balance = -127.44 } }
Excel로 데이터 내보내기
같은 파일에서
ThisAddIn클래스에 다음 메서드를 추가합니다. 이 메서드는 Excel 통합 문서를 설정하고 데이터를 해당 통합 문서로 내보냅니다.Sub DisplayInExcel(ByVal accounts As IEnumerable(Of Account), ByVal DisplayAction As Action(Of Account, Excel.Range)) With Me.Application ' Add a new Excel workbook. .Workbooks.Add() .Visible = True .Range("A1").Value = "ID" .Range("B1").Value = "Balance" .Range("A2").Select() For Each ac In accounts DisplayAction(ac, .ActiveCell) .ActiveCell.Offset(1, 0).Select() Next ' Copy the results to the Clipboard. .Range("A1:B3").Copy() End With End SubAdd 메서드에는 특정 템플릿을 지정하기 위한 선택적 매개 변수가 있습니다. 선택적 매개 변수를 사용하면 매개 변수의 기본값을 사용하려는 경우 해당 매개 변수에 대한 인수를 생략할 수 있습니다. 앞의 예제에서는 인수가 전송되지 않으므로
Add는 기본 템플릿을 사용하며 새 통합 문서를 만듭니다.범위 개체의
Range및Offset속성은 인덱싱된 속성 기능을 사용합니다. 또한 인덱싱된 속성에서는Value개체의Range속성을 사용할 수 있으므로Value2속성을 사용할 필요가 없습니다.Value속성은 인덱싱된 속성이지만 인덱스는 선택 사항입니다. 다음 예제에서는 선택적 인수와 인덱싱된 속성이 함께 사용됩니다.
열 너비를 콘텐츠에 맞게 조정하려면
DisplayInExcel끝에 다음 코드를 추가합니다.' Add the following two lines at the end of the With statement. .Columns(1).AutoFit() .Columns(2).AutoFit()interop 형식 포함에 대한 자세한 내용은 이 문서의 뒷부분에 있는 "PIA 참조를 찾으려면" 및 "PIA 종속성을 복원하려면" 절차를 참조하세요.
DisplayInExcel 호출
ThisAddIn_StartUp메서드의 끝에 다음 코드를 추가합니다.DisplayInExcel호출에는 두 개의 인수가 포함됩니다. 첫 번째 인수는 처리할 계좌 목록의 이름이고, 두 번째 인수는 데이터 처리 방법을 정의하는 여러 줄 람다 식입니다. 각 계좌의ID및balance값은 인접 셀에 표시되며 잔액이 0보다 작으면 행은 빨간색으로 표시됩니다.DisplayInExcel(bankAccounts, Sub(account, cell) ' This multiline lambda expression sets custom ' processing rules for the bankAccounts. cell.Value = account.ID cell.Offset(0, 1).Value = account.Balance If account.Balance < 0 Then cell.Interior.Color = RGB(255, 0, 0) cell.Offset(0, 1).Interior.Color = RGB(255, 0, 0) End If End Sub)F5 키를 눌러 프로그램을 실행합니다. 그러면 계좌의 데이터가 포함된 Excel 워크시트가 표시됩니다.
Word 문서 추가
ThisAddIn_StartUp메서드 끝에 다음 코드를 추가하여 Excel 통합 문서에 대한 링크가 포함된 Word 문서를 만듭니다.Dim wordApp As New Word.Application wordApp.Visible = True wordApp.Documents.Add() wordApp.Selection.PasteSpecial(Link:=True, DisplayAsIcon:=True)PasteSpecial 메서드에는 모두 선택적 참조 매개 변수로 정의되는 7개의 매개 변수가 있습니다. 명명된 인수와 선택적 인수를 사용하면 액세스할 매개 변수를 이름으로 지정하고 해당 매개 변수에만 인수를 보낼 수 있습니다. 이 예제에서는 클립보드에 통합 문서 링크를 만들어야 하고(
Link매개 변수) Word 문서에 링크를 아이콘으로 표시하도록(DisplayAsIcon매개 변수) 지정하는 인수를 전송합니다.
애플리케이션 실행
- F5 키를 눌러 애플리케이션을 실행합니다. Excel이 시작되고
bankAccounts의 두 계좌 정보가 포함된 표가 표시됩니다. 그런 후에 Excel 표의 링크가 포함된 Word 문서가 표시됩니다.
완료된 프로젝트 정리
- Visual Studio의 빌드 메뉴에서 솔루션 정리를 클릭합니다. 이렇게 하지 않으면 컴퓨터에서 Excel을 열 때마다 추가 기능이 실행됩니다.
PIA 참조 찾기
애플리케이션을 다시 실행하되 솔루션 정리를 클릭하지는 않습니다.
시작을 선택합니다. Microsoft Visual Studio <버전을> 찾아 개발자 명령 프롬프트를 엽니다.
Visual Studio용 개발자 명령 프롬프트 창에
ildasm을 입력하고 Enter 키를 누릅니다. IL DASM 창이 나타납니다.IL DASM 창의 파일 메뉴에서 파일>열기를 선택합니다. Visual Studio <버전을> 두 번 클릭한 다음 프로젝트를 두 번 클릭합니다. 프로젝트 폴더를 열고 프로젝트 이름.dll에서 bin/Debug 폴더를 확인한 후 프로젝트 이름.dll을 두 번 클릭합니다. 새 창에 프로젝트 특성과 기타 모듈 및 어셈블리에 대한 참조가 표시됩니다. 어셈블리에는
Microsoft.Office.Interop.Excel및Microsoft.Office.Interop.Word네임스페이스가 포함되어 있습니다. 기본적으로 Visual Studio에서 컴파일러는 필요한 형식을 참조된 PIA에서 어셈블리로 가져옵니다.자세한 내용은 방법: 어셈블리 콘텐츠 보기를 참조하세요.
MANIFEST 아이콘을 두 번 클릭합니다. 프로젝트가 참조하는 항목이 들어 있는 어셈블리 목록이 포함된 창이 표시됩니다.
Microsoft.Office.Interop.Excel및Microsoft.Office.Interop.Word는 목록에 포함되어 있지 않습니다. 프로젝트에 필요한 형식을 어셈블리로 가져왔기 때문에 PIA에 대한 참조는 필요하지 않으므로 배포를 손쉽게 수행할 수 있습니다. PIA는 사용자의 컴퓨터에 없어도 되며 애플리케이션에서 특정 PIA 버전을 배포할 필요가 없으므로 필요한 PIA가 모든 버전에 있다면 여러 Office 버전에서 사용하도록 애플리케이션을 설계할 수 있습니다.PIA를 배포할 필요가 없으므로 이전 버전을 비롯한 여러 Office 버전에서 사용 가능한 애플리케이션을 고급 시나리오에서 만들 수 있습니다. 그러나 사용 중인 Office 버전에서 제공되지 않는 API를 코드에서 사용하지 않는 경우에만 이러한 방식이 작동합니다. 특정 API가 이전 버전에서 제공되었는지 여부를 항상 명확하게 파악할 수 있는 것은 아니므로 이전 버전의 Office는 사용하지 않는 것이 좋습니다.
참고
Office 2003 이전 버전에서는 PIA가 게시되지 않았습니다. 그러므로 Office 2002 이하 버전에 대해 interop 어셈블리를 생성하려면 COM 참조를 가져와야 합니다.
매니페스트 창과 어셈블리 창을 닫습니다.
PIA 종속성 복원
- 솔루션 탐색기에서 모든 파일 표시 단추를 클릭합니다. References 폴더를 선택한 다음 Microsoft.Office.Interop.Excel을 선택합니다. F4 키를 눌러 속성 창을 표시합니다.
- 속성 창에서 Interop 형식 포함 속성을 True에서 False로 변경합니다.
-
Microsoft.Office.Interop.Word에 대해 이 절차의 1-2단계를 반복합니다. - F5 키를 눌러 프로젝트가 제대로 실행되는지 확인합니다.
- 이전 절차의 1-3 단계를 반복하여 어셈블리 창을 엽니다.
Microsoft.Office.Interop.Word및Microsoft.Office.Interop.Excel이 포함된 어셈블리 목록에 더 이상 표시되지 않습니다. -
MANIFEST 아이콘을 두 번 클릭하고 참조되는 어셈블리 목록을 스크롤합니다.
Microsoft.Office.Interop.Word및Microsoft.Office.Interop.Excel이 모두 목록에 있음을 확인할 수 있습니다. 애플리케이션에서 Excel 및 Word PIA를 참조하며 Interop 형식 포함 속성이 False로 설정되어 있으므로 두 어셈블리가 모두 최종 사용자의 컴퓨터에 있어야 합니다. - Visual Studio의 빌드 메뉴에서 솔루션 정리를 클릭하여 완성된 프로젝트를 정리합니다.
참조
.NET