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# 을 사용해야하는건가 보군요
알겠습니다 링크 잘 참조하겠습니다 답변 감사합니다 ^^

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

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

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


[guest]

1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5802모바일앱1/22/20232895XAMARINE vs Android Studio [7]
5801블루투스1/19/20233644WPF 은행지폐계수기 개조 후 결과값 서버 전송 [2]파일 다운로드1
5800김민아1/19/20233966안녕하세요 가비지 컬렉터 동작 원리 중 궁금한점이 있습니다 [5]
5799guest1/19/20233117C# 공유폴더 내 Acess 디비 공유 [2]
5798kss1/19/20232902책 오탈인가요? [1]
5797이거비버1/19/20232993C# 공부 이후 MS 프레임워크.. 어느것을 공부해야할까요? 너무 많아서 정신이 없네요 [5]
5796guest1/19/20232718해킹 test [3]
5795동기1/18/20232559동기 스레드와 메서드와 While [2]
5794박규동1/18/20232528.net publish 할때마다 runtimeconfig 값이 바뀌는 현상 [1]
5793후후훗1/18/20232689.NET Core 에서 사용중인 함수 후킹 방법 [2]
5792Will...1/18/20232620소스코드 Log Write 기능을 리스트업 질문 [9]
5791PLC1/16/20233314C# - 실시간 5개 룸 모니터링 [15]
5790집으로 ...1/13/20232963[UI 멈춤 현상]deadlock 관련 글을 보고 혹시나 하고 문의 드립니다. [4]
5789guest1/10/20232861스레드와 Async Task [2]파일 다운로드1
5788kr11/10/20233305C# 에서 제공하는 컬렉션들의 차이점이 궁금합니다. [3]
5787stack1/10/20233091STACKOVERFLOW [1]
5786Dev ...1/9/20233968익명 클래스 말고 익명 구조체는 불가능한걸까요? [4]
5785음성인식1/8/20233574음성인식 System.Speech - 문법에 사용된 언어가 음성 인식기의 언어와 일치하지 않습니다. [2]
5784MS워드1/8/20233169MS워드에서 ctrl Z는 클립보드를 이용하나요? 아니면 참조자 이용하나요? [7]
5783구직자1/7/20233239C#개발자 구인광고와 초급개발자 [3]파일 다운로드1
5782Sqli...1/5/20233181윈도우11 노트북에서 exe(Sqlite)만들어 윈도우 7 PC에 설치 시 [5]
5781List맨1/5/20233738List.Add("newobj") 속도는 빠른 편인지요? [11]
5780임세1/3/20234342C# 프로그래밍 10 책 구매한 사람입니다. 3부 자료는 어디서 다운 받을 수 있나요? [4]
5779이건우1/2/20233200안녕하십니까 루프안에서 메세지처리에 관하여 질문드립니다! [2]
5778이건우12/30/20224461안녕하세요 c#에서 dll참조 관련 질문드립니다. [4]
5777감사합니...12/29/20223470UI Thread에 Invoke 처리관련 궁금합니다. [3]
1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...