Microsoft MVP성태의 닷넷 이야기
글쓴 사람
진우
홈페이지
첨부 파일






첨부된 그림처럼 그리드 형태의 응용프로그램과 엑셀을 동기화(?) 하고싶습니다.
엑셀에서 셀값 입력, 시트 추가/변경 등을 하면 응용프로그램에서도 똑같이 셀값이 입력, 시트 추가/변경 되고
반대로 응용프로그램에서 값변경, 시트 추가/변경을 하면 엑셀에 똑같이 적용되게 하고싶습니다.

그러나 응용프로그램에서 발생하는 사용자 이벤트는 제가 사용방법을 알고있는데
엑셀에서 발생하는 사용자 이벤트는 어떻게 통지받고 콜백 등록하는지 방법을 모르겠습니다.
궁극적으로 엑셀 c++ COM 을 사용해야하는건지 혼란스럽습니다.
검색중에 XLL 이라는걸 알게 되었는데 이것은 엑셀 사용자 정의 함수(UDF) 인것같습니다. 제가 원하는게 아닌것같은데
이것도 아닌건지 맞는건지 모르겠습니다.

정리하자면
엑셀 C++ COM 개체를 직접 사용해야하는건지 아니면 다른 방법이 있는건지 너무 궁금합니다.
읽어주셔서 감사합니다!








[최초 등록일: ]
[최종 수정일: 7/28/2020]


비밀번호

댓글 작성자
 



2020-07-28 10시53분
글쎄요, 엑셀 측은 아마도 VSTO로 만들어야 제어가 되지 않을까 싶은데요.

C# - Excel 시트에 윈도우 폼 기능을 추가하는 방법
; https://www.sysnet.pe.kr/2/0/10998

아니면, Add-in으로 만들어 엑셀에 등록하는 식으로 만들어야 할 것입니다. 만약 아래의 글처럼, Excel Application을 COM 객체로 직접 만들어 제어하는 경우,

C# - Excel(을 비롯해 Office 제품군) COM 객체를 제어 후 Excel.exe 프로세스가 남아 있는 문제
; https://www.sysnet.pe.kr/2/0/11997

Worksheet 개체 단위로 Change 이벤트를 걸어두면 될 것입니다.
정성태
2020-07-29 03시59분
[진우] 성능때문에 c++ 을 생각하고있었는데 결국은 c# 을 사용해야하는건가 보군요
알겠습니다 링크 잘 참조하겠습니다 답변 감사합니다 ^^

[손님]
2020-07-29 04시28분
@진우 C++로 하셔도 됩니다. (물론, 더 복잡해질 것입니다. ^^;)
정성태
2020-07-29 04시40분
[진우] 네 c++ 은 com 에 접근하는거라 복잡하더라구요..
검색을 해보면 모두 COM 과 관련된 2000년대의 오래된 자료들뿐인데 VS2015나 VS2017 VC++ 에서 샘플소스들을 사용해보면 에러만 엄청나게 뜹니다..
vs2005, 2008 까지는 자료가 좀 있더라구요
그래서 MS 에서 c++ 로 엑셀 컨트롤하는 기능을 없애고 닷넷 기반으로만 사용하도록 한건지 도무지 알수가 없어서 혼란스러웠습니다.
시간을 두고 차근차근 공부하면서 해야할것같습니다
하지만 너무 오래걸리면 말씀대로 c# VSTO를 사용해야할것같네요
답변 감사합니다 ^^

[손님]
2020-07-29 09시51분
@진우 닷넷만 사용하도록 한 것은 아닙니다. 오히려 전체적인 기반은 C++을 위한 COM이지만 그것을 C#에서 쉽게 사용할 수 있기 때문에 대체로 그렇게 접근하는 것이 일반화된 것입니다.

그리고, 성능상 C++로 하신다고 했는데 사실 COM 개체를 사용하는 측에서 보면 C++이나 C#이나 그렇게 크게 차이나는 것은 아닙니다. (게임 프로그래밍처럼 fps를 다투는 상황이라면 모를까... 서로 동기화 시키는 정도의 이벤트 반응에는 거의 차이가 없다고 봐도 무방할 것입니다.)
정성태
2020-07-30 04시34분
[진우] 네 말씀대로 c++ 보다는 c# 을 많이 쓰다보니 c# 을 쓰는 방법만 있는걸로 제가 착각했던것같습니다.
지금 엑셀과 다른 응용프로그램을 연동하는게 목표인데요
파일매핑오브젝트를 통해 프로세스간 통신하게끔 하려는데 아무래도 c# 보단 win32 api 를 직접 쓰는게 낫지않을까 싶어서요
어떻게 하는게 최선의 방법인지 알아보고만 있는중입니다.
^^


[손님]

1  2  3  4  5  6  7  8  9  10  11  12  13  14  [15]  ...
NoWriterDateCnt.TitleFile(s)
5436영귤12/24/20202881fixed는 자동으로 stackalloc이 되는 건가요? [1]
5435한예지12/24/20202816ArraySegment, Span, ReadOnlySpan 질문있습니다! [1]
5434한예지12/23/20203237ToString 재정의 질문있습니다! [8]
5433한예지12/23/20202876List<ArrarySegment<int>> 사용법 질문드립니다! [2]
5431한예지12/17/20203913비동기 소켓 서버 질문 드립니다! [1]
5430종범12/16/20203572[WPF] Task 관련 재질문 드립니다. [2]파일 다운로드1
5429종범12/16/20203286[WPF] Task 관련 질문 드립니다. [1]파일 다운로드1
5428최선호12/14/20203590성태님 ㅠ.ㅠ 소켓 서버 작동이 이상합니다 ㅠ.ㅜ [1]파일 다운로드1
542712/11/20203465LPBOOL Win32 마샬링 질문이 있습니다. [6]
5426하태12/11/20202680안녕하세요 정성태님! C# winform Calendar 컨트롤 질문 드리겠습니다!. [1]
5425정유경12/10/20202621[왕초보] (4) [1]
5423정유경12/8/20202955[왕초보] (3) [2]
5422이승준12/7/20204896VisualStudio 2019의 인텔리센스가 느려지는 경우가 있나요? [4]
5421정유경12/6/20203485[왕초보] (2) [4]
5420정유경12/5/20203019[왕초보] 랜덤 숫자와 배열에 관한 질문 [1]
5419종범12/4/20203468[WPF] Threadpool사용 시 크리티컬 섹션 대응 질문 입니다. [4]
5418한예지11/27/20203554클래스, 인터페이스 크기를 구하고 싶은데 어떻게 해야 될까요? [1]
5417한예지11/27/20202759인터페이스와 추상클래스에 대해 궁금증이 있습니다. [1]
5416한예지11/27/20202752Object 질문 있어요. [1]
5415한예지11/25/20202776교재 213쪽 예제 4.25 질문드립니다. [1]
5414한예지11/23/20203425제네릭 리스트 출력하는 방법이 궁금합니다. [1]
5413민석11/20/20203400C# minidump를 프로그램이 중단 될 때 만들고 싶습니다. [1]파일 다운로드2
5411원격11/20/20202736visualstdio로 웹 사이트로 만들었을때 원격 디버깅이 가능한가요? [1]
5410최성재11/16/20203178vcpkg로 GDCM 내려받을 때 USE_VTK 설정하는 방법-2번째 질문 [1]파일 다운로드1
5409민성11/16/20205238혹시 다른 질문이긴 한데요 [1]
5408최성재11/16/20203391vcpkg로 GDCM 내려받을 때 USE_VTK 설정하는 방법 [1]
1  2  3  4  5  6  7  8  9  10  11  12  13  14  [15]  ...