2010-02-18 4 views
5

대 나는 2008 년비주얼 스튜디오 2008 오피스 인터롭 2003 2007

추가 기능이을 시작 클릭 할 수있는 하나의 도구 모음 단추를 생성 비주얼 스튜디오 .NET을 사용하여 추가 기능은 Microsoft Excel 용을 개발하고 양식을 사용하여 데이터베이스의 값을 활성 스프레드 시트의 셀에 추가 할 수 있습니다.

1) 요구 사항은 도구가 모두 Excel 2003 및 또 다른 요구 사항은 Excel 2007에서, 발사 버튼을 자신의 리본 탭에있을 것입니다) 2007 년

2에서 사용할 수 있다는 것입니다.

리본 탭 요구 사항으로 인해 각 Office 버전마다 하나씩 두 개의 Excel 추가 기능 프로젝트를 Visual Studio에서 만들었습니다.

두 개의 추가 기능이 두 개의 다른 Office.Interop 어셈블리를 참조해야하고 데이터베이스 쿼리 폼을 제공하는 프로젝트가 하나만 참조 할 수 있기 때문에이 두 번째 추가 기능 프로젝트간에이 세 번째 어셈블리를 공유 할 수 없습니다. .

두 추가 기능 버전 각각에 대해 양식 코드의 별도 복사본을 유지하는 것보다 간단한 솔루션을 제공하는 사람이 있습니까?

감사합니다.

옵션 1 : 데이터베이스 쿼리를 제공하는 공유 프로젝트의 모든 Interop 어셈블리를 참조하면 안됩니다

답변

4

두 가지 옵션이 있습니다. 인터페이스 및 종속성 주입을 사용하여 추가 기능 프로젝트에서 필요한 Excel 상호 운용성 코드를 제공하십시오.

예를 들어 보겠습니다. 공유 프로젝트가 Interop 라이브러리에 액세스해야하는 일부 기능 func을 실행해야한다고 가정합니다. 당신은 당신의 공유 프로젝트에 인터페이스를 만들 수 있습니다 귀하의 추가 기능 프로젝트에서

public interface ExcelInterface { 
    void func(); 
} 

하여 제공하는 구현이 인터페이스 :

class Excel2003Interface : ExcelInterface { // located in your Excel 2003 Addin 
    void func() { 
     // the code here can use the Excel 2003 interop reference 
    } 
} 

가 마찬가지로, 당신은 당신의 Excel 2007의 추가 기능에 Excel2007Interface을 만들 수 있습니다.

void DoSomething(ExcelInterface iface) { // this is in your shared project 
    ... 
    iface.func(); 
    ... 
} 

옵션 2 : 사용 litte 공유 프로젝트에서 양식을 열 때 다음

, 당신은 func를 호출하는 형태로 사용된다 Excel2003Interface 또는 Excel2007Interface 중 하나의 인스턴스를, 통과 Visual Studio의 알려진 link file feature은 두 개의 추가 기능 프로젝트간에 코드를 공유합니다.

관련 문제