다음을 통해 공유


Office 솔루션에서 코드 작성

Office 프로젝트에는 Visual Studio의 다른 프로젝트 형식과 차이가 있는 코드 작성 측면이 몇 가지 있습니다.이러한 차이점은 대부분 Office 개체 모델이 관리 코드에 노출되는 방식과 관련이 있으며Office 프로젝트의 디자인과 관련이 있는 차이점도 있습니다.

적용 대상: 이 항목의 정보는 Office 2013 및 Office 2010의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

관리 코드 및 Office 프로그래밍

통합된 Microsoft Office 솔루션을 만들 수 있는 핵심 기술은 COM(Component Object Model) 기술의 일부인 자동화입니다.자동화를 통해 코드를 사용하여 적절한 프로그래밍 인터페이스를 지원하는 모든 응용 프로그램, DLL 또는 ActiveX 컨트롤에서 노출하는 소프트웨어 개체를 만들고 제어할 수 있습니다.

Bb608596.collapse_all(ko-kr,VS.110).gif주 Interop 어셈블리 이해

Microsoft Office 응용 프로그램에서는 자동화에 사용할 수 있도록 많은 기능을 노출합니다.그러나 Visual Basic 또는 C#과 같은 관리 코드로는 Office 응용 프로그램을 직접 자동화할 수 없습니다.관리 코드를 사용하여 Office 응용 프로그램을 자동화하려면 Office PIA(주 Interop 어셈블리)를 사용해야 합니다.주 interop 어셈블리를 사용하면 관리 코드가 Office 응용 프로그램의 COM 기반 개체 모델과 상호 작용할 수 있습니다.

모든 Microsoft Office 응용 프로그램에는 PIA가 있습니다.Visual Studio에서 Office 프로젝트를 만드는 경우 적절한 PIA에 대한 참조가 프로젝트에 자동으로 추가됩니다.프로젝트에서 다른 Office 응용 프로그램의 기능을 자동화하려면 적절한 PIA에 대한 참조를 수동으로 추가해야 합니다.자세한 내용은 방법: 주 Interop 어셈블리를 통한 Office 응용 프로그램 대상 선택을 참조하십시오.

Bb608596.collapse_all(ko-kr,VS.110).gif디자인 타임 및 런타임에 주 Interop 어셈블리 사용

대부분의 개발 작업을 수행하려면 개발 컴퓨터의 전역 어셈블리 캐시에 Office PIA가 설치 및 등록되어 있어야 합니다.자세한 내용은 Office 솔루션을 개발할 수 있도록 컴퓨터 구성을 참조하십시오.

Office Pia 최종 사용자 컴퓨터에 대상으로 하는 Office 솔루션을 실행 하는 데 필요한지 않습니다는 .NET Framework 4 또는 .NET Framework 4.5.자세한 내용은 Office 솔루션 디자인 및 만들기을 참조하십시오.

Bb608596.collapse_all(ko-kr,VS.110).gif주 Interop 어셈블리의 형식 사용

Office PIA에는 Office 응용 프로그램의 개체 모델을 노출하는 형식과 코드에서 직접 사용할 수 없는 추가 인프라 형식의 조합이 포함되어 있습니다.Office PIA의 형식에 대한 개요를 보려면 Overview of Classes and Interfaces in the Office Primary Interop Assemblies를 참조하십시오.

Office PIA의 형식이 COM 기반 개체 모델의 형식에 해당하기 때문에 일반적으로 이러한 형식을 사용하는 방식은 다른 관리되는 형식과 다릅니다.예를 들어, Office 주 interop 어셈블리에서 선택적 매개 변수를 사용하는 메서드를 호출하는 방식은 프로젝트에서 사용하는 프로그래밍 언어에 따라 달라집니다.자세한 내용은 다음 항목을 참조하십시오.

Office 프로젝트의 프로그래밍 모델

모든 Office 프로젝트에는 코드에 대한 진입점을 제공하는 생성된 클래스가 하나 이상 포함되어 있습니다.이러한 클래스를 사용하여 호스트 응용 프로그램의 개체 모델과 작업 창 및 사용자 지정 작업 창과 같은 기능에 액세스할 수도 있습니다.

Bb608596.collapse_all(ko-kr,VS.110).gif생성된 클래스 이해

Excel 및 Word의 문서 수준 프로젝트에서, 생성된 클래스는 응용 프로그램의 개체 모델에 있는 최상위 개체와 유사합니다.예를 들어 Word 문서 프로젝트의 생성된 ThisDocument 클래스에서는 Word 개체 모델의 Microsoft.Office.Interop.Word.Document 클래스와 동일한 멤버를 제공합니다.문서 수준 프로젝트의 생성된 클래스에 대한 자세한 내용은 문서 수준 사용자 지정 프로그래밍을 참조하십시오.

응용 프로그램 수준 프로젝트는 ThisAddIn이라는 생성된 클래스를 제공합니다.이 클래스는 호스트 응용 프로그램의 개체 모델에 있는 클래스와 유사하지 않습니다.대신 이 클래스는 추가 기능 자체를 나타내며 호스트 응용 프로그램의 개체 모델과 추가 기능에 사용할 수 있는 다른 기능에 액세스하는 데 사용할 수 있는 멤버를 제공합니다.자세한 내용은 응용 프로그램 수준 추가 기능 프로그래밍을 참조하십시오.

Office 프로젝트의 모든 생성된 클래스에는 Startup 및 Shutdown 이벤트 처리기가 포함됩니다.코드 작성을 시작하려면 일반적으로 이러한 이벤트 처리기에 코드를 추가합니다.추가 기능을 초기화하려면 Startup 이벤트 처리기에 코드를 추가합니다.추가 기능에서 사용한 리소스를 해제하려면 Shutdown 이벤트 핸들러에 코드를 추가합니다.자세한 내용은 Office 프로젝트의 이벤트을 참조하십시오.

Bb608596.collapse_all(ko-kr,VS.110).gif런타임에 생성된 클래스 액세스

Office 솔루션이 로드되면 Microsoft Visual Studio Tools for Office Runtime에서 프로젝트의 각 생성된 클래스를 인스턴스화합니다.프로젝트의 어느 코드에서나 Globals 클래스를 사용하여 이러한 개체에 액세스할 수 있습니다.예를 들어 Globals 클래스를 사용하여 응용 프로그램 수준 추가 기능에 있는 리본 단추의 이벤트 처리기에서 ThisAddIn 클래스의 코드를 호출할 수 있습니다.

자세한 내용은 Office 프로젝트의 개체에 전역 액세스을 참조하십시오.

Bb608596.collapse_all(ko-kr,VS.110).gifOffice 솔루션에서 네임 스페이스 고려 사항

Office 프로젝트를 만든 후에는 프로젝트의 기본 네임스페이스(Visual Basic의 경우 루트 네임스페이스)를 변경할 수 없습니다.기본 네임스페이스는 항상 프로젝트를 만들 때 지정한 프로젝트 이름과 일치합니다.프로젝트의 이름을 바꿔도 기본 네임스페이스는 변경되지 않습니다.프로젝트의 기본 네임스페이스에 대한 자세한 내용은 프로젝트 디자이너, 응용 프로그램 페이지(C#)프로젝트 디자이너, 응용 프로그램 페이지(Visual Basic)를 참조하십시오.

Bb608596.collapse_all(ko-kr,VS.110).gifC# 프로젝트에 포함된 호스트 항목 클래스의 네임스페이스 변경

ThisAddIn, ThisWorkbook 또는 ThisDocument 클래스와 같은 호스트 항목 클래스는 Visual C# Office 프로젝트에서 개별 네임스페이스를 사용합니다.기본적으로 프로젝트에 포함된 호스트 항목의 네임스페이스는 프로젝트를 만들 때 지정한 프로젝트 이름과 일치합니다.

Visual C# Office 프로젝트에서 호스트 항목의 네임스페이스를 변경하려면 호스트 항목의 네임스페이스 속성을 사용합니다.자세한 내용은 Office 프로젝트의 속성을 참조하십시오.

Office 프로젝트에서 지원 되는 프로그래밍 언어

Visual Studio의 Office 프로젝트 템플릿은 Visual Basic 및 Visual C# 프로그래밍 언어만 지원합니다.따라서 이러한 프로젝트 템플릿은 Visual Studio의 새 프로젝트 대화 상자에 있는 Visual BasicVisual C# 노드에서만 사용할 수 있습니다.자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기을 참조하십시오.

언어 선택 및 Office 프로그래밍

Microsoft Office 및 VBA(Visual Basic for Applications)는 응용 프로그램 사용자 지정의 워크플로를 최적화하는 데 함께 사용할 수 있도록 개발되었습니다.Visual Basic은 이러한 개발 사항 중 일부를 상속했습니다.예를 들어 Visual Basic에서는 선택적 매개 변수를 지원합니다. 즉, Microsoft Office 주 interop 어셈블리에서 일부 메서드를 호출할 때 Visual C#을 사용할 때보다 코드를 적게 작성할 수 있습니다.

Visual Basic VS와 프로그래밍. Visual C# Office 솔루션

Visual Basic 또는 Visual C#을 사용하여 Office 솔루션을 만들 수 있습니다.Microsoft Office 개체 모델은 Microsoft VBA(Visual Basic for Applications)와 함께 사용하도록 디자인되었으므로 Visual Basic 개발자는 Microsoft Office 응용 프로그램에서 노출하는 개체를 손쉽게 사용할 수 있습니다.Visual Studio 2012에서 Visual C# 개발자는 대부분 Visual Basic 개발자와 동일한 기능을 사용할 수 있지만 Office 개체 모델을 사용하기 위해 추가 코드를 작성해야 하는 경우도 있습니다.Office 개발과 Visual Basic 및 C#으로 작성된 관리 코드 간에는 기본 프로그래밍 기능 면에서 몇 가지 차이점도 있습니다.

Visual Basic C# 사이의 주요 차이점

다음 표에서는 Office 개발 시 Visual Basic과 Visual C#의 주요 차이점을 보여 줍니다.

기능

설명

Visual Basic 지원

Visual C# 지원

선택적 매개 변수

많은 Microsoft Office 메서드에는 메서드를 호출할 때 반드시 전달하지 않아도 되는 매개 변수가 있습니다.매개 변수의 값을 전달하지 않으면 기본값이 사용됩니다.

Visual Basic에서는 선택적 매개 변수를 지원합니다.

Visual C#에서는 대부분의 경우에 선택적 매개 변수를 지원합니다.자세한 내용은 Office 솔루션의 선택적 매개 변수을 참조하십시오.

참조로 매개 변수 전달

대부분의 Microsoft Office 주 interop 어셈블리에 있는 선택적 매개 변수는 값으로 전달할 수 있습니다.그러나 일부 주 interop 어셈블리에서는 참조 형식을 사용하는 선택적 매개 변수를 참조로 전달해야 합니다.

값 및 참조 형식 매개 변수에 대한 자세한 내용은 값 및 참조로 인수 전달(Visual Basic)(Visual Basic의 경우) 및 매개 변수 전달(C# 프로그래밍 가이드)을 참조하십시오.

매개 변수를 참조로 전달하는 데에는 추가적인 작업이 필요하지 않습니다.Visual Basic 컴파일러에서는 필요할 때 자동으로 매개 변수를 참조로 전달합니다.

대부분의 경우 Visual C# 컴파일러에서는 필요할 때 자동으로 매개 변수를 참조로 전달합니다.자세한 내용은 Office 솔루션의 선택적 매개 변수을 참조하십시오.

매개 변수가 있는 속성

일부 속성은 매개 변수를 받으며 읽기 전용 함수처럼 동작합니다.

Visual Basic에서는 매개 변수를 받는 속성을 지원합니다.

Visual C#에서는 매개 변수를 받는 속성을 지원합니다.

런타임에 바인딩

런타임에 바인딩 과정에서는 디자인 타임에 변수를 개체 형식으로 캐스팅하는 것이 아니라 런타임에 개체의 속성을 확인해야 합니다.

Visual Basic 수행 될 때 런타임에 바인딩 Option Strict 꺼져 있습니다.Option Strict가 설정되면 명시적으로 개체를 변환하고 System.Reflection 네임스페이스의 형식을 사용하여 런타임에 바인딩되는 멤버에 액세스해야 합니다.자세한 내용은 Office 솔루션에서 런타임에 바인딩을 참조하십시오.

Visual C#은 .NET Framework 4를 대상으로 하는 프로젝트에서 런타임에 바인딩을 수행합니다.자세한 내용은 Office 솔루션에서 런타임에 바인딩을 참조하십시오.

Office 개발과 관리 코드의 주요 차이점

다음 표에서는 Office 개발과 Visual Basic 또는 Visual C#으로 작성된 관리 코드의 주요 차이점을 보여 줍니다.

기능

설명

Visual Basic 및 Visual C# 지원

배열 인덱스

아래 배열 바인딩 컬렉션에는 Microsoft Office 응용 프로그램의 1부터 시작합니다.Visual Basic과 Visual C#에서는 0부터 시작하는 배열을 사용합니다.자세한 내용은 배열(C# 프로그래밍 가이드)Visual Basic의 배열을 참조하십시오.

Microsoft Office 응용 프로그램의 개체 모델에서 컬렉션의 첫 번째 항목에 액세스하려면 인덱스 0이 아니라 1을 사용합니다.

참고 항목

작업

방법: 주 Interop 어셈블리를 통한 Office 응용 프로그램 대상 선택

방법: Office 프로젝트에서 이벤트 처리기 만들기

개념

Office 솔루션의 선택적 매개 변수

Office 프로젝트의 개체에 전역 액세스

Office 프로젝트의 이벤트

Office 솔루션에서 런타임에 바인딩

Office 솔루션 공동 개발