문제

Turbo Delphi 2006을 사용하고 있습니다.

DLL은 VBA/DLL 조합의 일부로 Excel 내에서 호출됩니다.

문제의 첫 번째 부분은 현재 Excel 세션에 대한 DLL에 전달하는 방법을 찾는 것입니다. 내가 본 대부분의 다른 코드는 당신이있는 것과는 별도의 Excel 인스턴스를 시작했다는 것입니다.

인스턴스를 만드는 C ++ 코드를 보았습니다. IDispatch 그런 다음 무언가를 Idispatch 객체의 메소드로 전달하지만 C ++를 많이 알지 못합니다.

어떤 아이디어?

도움이 되었습니까?

해결책

당신이 묘사 한 것을 com addin을 쓰는 것입니다. 자동화 DLL을 생성하고 구현해야합니다. IDTExtensibility2 상호 작용. 그런 다음 Excel을받습니다 Application 매개 변수로 인터페이스 OnConnection 방법.

당신은 또한 필요합니다 등록하다 Addin으로서의 DLL이므로 Excel은 자동으로로드합니다.

편집하다: 언급하는 것을 잊었습니다. 애드 인 익스프레스. 그들의 프레임 워크와 구성 요소는 Office Addins의 생성을 엄청나게 쉽게 만들기 시작합니다. 당신은 분명히 세부 사항을 귀찮게 할 필요가 없습니다. IDTExtensibility2. 그러나 (잘 정당한) 가격표와 함께 제공됩니다.

다른 팁

Delphi에는 Excel 및 기타 사무실 응용 프로그램에 완전히 액세스 할 수 있도록 ActiveX 컨트롤 세트가 제공됩니다. 도구 팔레트의 "서버"탭에 있어야합니다.

없는 경우 구성 요소를 선택하고 패키지를 설치하고 끝까지 목록을 아래로 스크롤하고 올바른 패키지를 선택하십시오.

기본 설치에서는 다음과 같이 호출해야합니다.

Microsoft Office 샘플 자동화 서버 래퍼 구성 요소

그리고 XP와 Win2K에 대한 것이 있어야합니다. XP는 Vista에서 일할 것입니다.

이제 Excel을 자동화하려는 경우.

Delphi를 사용하여 Excel에 기능을 추가하려면 Excel이 COM 객체를 매우 수용하고 있다고 생각하기 때문에 COM 객체를 사용하는 것이 좋습니다. 그렇지 않으면 직선 DLL을 생성하고 Excel이 다른 DLL을 사용하는 것과 같은 방식으로 사용할 수 있습니다.

나는 사무실에 대해 많이 알지 못하지만 com/activex를 사용해야한다고 생각합니다. 그런 다음 Idispatch도 얻습니다. 보다 http://delphi.about.com/od/comoleActivex/ole_com_dcom_automation_activex_delphi_ knowledge_base.htm

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top