C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[5424] Re:엑셀화일내의 매크로 이용... 이게 가능한가요?
한꼬맹이 [] 2847 읽음    2001-02-13 21:53
최우택 님이 쓰신 글 :
:
:  COM을 통해 엑셀 화일을 조작하려고 하는데, 책에서 본 내용만으론 여려운 부분이 생겨 질문을 올려봅니다. 요약하면 2가지 입니다.
:
:  1. 엑셀화일이 갖고 있는 VBA함수를 COM을 통해 호출하여 동작시키는 것이 가능한가요?
:
:  2. 엑셀의 객체를 함수로부터 반환받아 객체로서 사용(멤버함수를 호출하고.. 속성을 조작하는
:    등등..)하는 것이 가능한지요. 가능하다면 반환되어 오는 객체를 어떻게 받아야 하는지요?
:
:  이런 질문을 하게 된 동기는... 엑셀 객체구조로 접근해서 속성을 편집하거나, 일반적인 데이터(문자열이나 수치 데이터)들을 반환하는 함수를 사용하는 정도까지는 성공했지만, VBA객체를 반환하는 함수들에 대해서는 어떻게 다루어야 할 지 알수 없어서 입니다. 좀 엉뚱한 것 같다는 생각이 들면서도 포인터로 어찌어찌하면 가능할 것 같기도 하고.... 어떻튼 객체를 반환받아 접근할 수가 없으니까 왼팔만 가지고 권투하는 기분이군요. 이 부분에 대한 좋은 예제같은 것 갖고 계신 분.... 없으신가요?

안녕하십니까?

한꼬맹이 입니다.

밑에 분이 말씀하신대로 오피스관련 객체를 조작하시려면 OLE Aotomation 이라는 것을

이용합니다. 비베의 경우도 물론 이방법을 씁니다. 그러나 비베는 OLE 인터페이스를 다룰때

표준인터폐이스를 직접불러오지 않고 IDispatch라는 속력이 느린 방법으로 접근을 합니다.

왜냐하면 비베는 포인터가 없기땜시 빠른 표준인터폐이스를 포인터를 직접 못 얻어오기 때문에

효율이 떨어지는 방법을 쓰는 것이죠... 그러나 빌더는 표준인터폐이스뿐아니라 IDispatch까지

모두 지원해주는 듀얼 인터폐이스를 제공합니다.

빌더에서 OLE Automation을 다루시려면 3가지 방법이 있는데...

1. 비베와 같이 IDispatch인터페이스와 가변형 변수를 이용하는 방법...
  
2. 타입라이브러리를 임포팅하여 직접 인터페이스를 얻어오는 방법

3. 빌더의 Server라는 컴포넌트 탭의 컴포넌트를 이용하는 방법...
 
만약 비베에 예제가 있다면 그것을 똑같이

바꾸어 주면 되는데... 처음하시는 분은 포팅을 하시기가 좀 어려울지도....

비베의 예제를 포팅하실때 가변형변수의 경우 함수호출은 OleFunction(), OleProcedure()

프러퍼티 조작은 OlePropertyGet(),OlePropertySet()이용 하시면 됩니다.

그럼 참고하시길....

+ -

관련 글 리스트
5418 엑셀화일내의 매크로 이용... 이게 가능한가요? bluewing 2848 2001/02/13
5424     Re:엑셀화일내의 매크로 이용... 이게 가능한가요? 한꼬맹이 2847 2001/02/13
5440         Re:Re:엑셀화일내의 매크로 이용... 이게 가능한가요? bluewing 2867 2001/02/14
5448             Re:Re:Re:엑셀화일내의 매크로 이용... 이게 가능한가요? 제라툴 2929 2001/02/14
5421     Re:엑셀화일내의 매크로 이용... 이게 가능한가요? 제라툴 2804 2001/02/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.