-
무엇을 하고자 하는지
; 현재 사용하는, 엑셀Addin추가기능 XLL 솔루션에 WPF 프로젝트를 추가하고 싶습니다. 그리고 사용자가 편하게 설치하게 끔 하는 배포? 절차를 추가 하고 싶습니다. -
현재 작성한 코드 중 문제가 되는 부분
; c# 을 디버깅은 해봤지만, 배포?라는 걸 (설치 자동으로 되는 걸) 해본 적이 없습니다.
방향성을 전혀 몰라서, 간략하게나마 방향성이라도 알려주시면 거기로 열심히 파보려고 합니다. -
기대하는 동작
설치(배포)하는 프로그램 exe를 클릭하면- xll파일이 원하는 폴더에 설치되고 (이건 찾아보면 할 수 있을 것 같습니다)
- 계산기앱처럼 만들, WPF 앱도 xll과 동일한 폴더에 설치되고, 바탕화면에 실행아이콘을 만들고 싶습니다.
언젠가는 c#으로 멋진 앱을 만들어 봐야지 하는 열정만 가득한 초보입니다.
업무가 공학설계쪽이라, 엑셀에서 많은 작업을 합니다. 이 때 공학 계산에 필요한 복잡한 (엑셀수식으로는 처리가 안되는) 수식은 엑셀 추가기능으로 만들어서 사용하고 있습니다.
ExcelDNA라는 c#(or VB)으로 코드를 짜면, 엑셀에서 vba매크로 함수처럼, 사용자함수-UDF를 만들어서 사용하게 해주는 라이브러리가 있어서 몇 년 전에 만들어 본 적이 있습니다.
현재 아래 그림과 같이 구성되어 있습니다.
3년 전 즈음 만들어서 간단히 배포용 블로그도 만들기도 했습니다. 그런데 C#으로 공학용 코드를 만드는 것이 너무 오랜 시간이 걸리기도 하고, 제 C# 능력이 부족하기도 해서 더 나아지기가 쉽지 않았습니다. 코로나 시절 집에 있는 시간이 많으니 취미삼아 만들기에는 좋았는데, 이제는 그렇지 못한 상황입니다. 최근 2년정도 파이썬을 건드려보게 되었는데, 작업속도가 훨씬 빠르고 이미 검증되어 사용하던 공학 라이브러리들도 많아서 편했습니다. 그래서 최근에는 간단한 툴은 파이썬으로 구현하기도 했습니다.
그런데
아직까지 **풀지 못한 장벽**이 하나 있어서 다시 c#을 들춰볼까 하고 있습니다.
그것은 처음 C#으로 만든 기능의 핵심은 "excel"에서 사용자들이 편하게 사용하는 것입니다.
엑셀사용자함수(UDF)는 주로 엑셀macro파일로 xlam 확장자나 xlsm 등으로 배포합니다. 그런데 이 것은사용자 환경 측면에서는 좋지 못합니다. 배포나 설치, 경로 문제 발생하고 합니다. 그리고 이러한 문제를 제외하더라도 제가 구현하고자 하는 공학용 라이브러리도 파이썬,C# 등과 비교하면 구하기가 어렵습니다. 라이브러리만 구하면 되는 것이 아니라, 공학단위의 변환 등도 확인해야 하고, 디버깅하는 것도 vbe는 구닥다리라 vscode, visual studio와 비교하면 정말 답답한 수준입니다.
엑셀 추가기능을 확장하는 방법 중에서, XLL확장자를 가진, C++나 C#으로 구현된 추가기능을 배포하는 것이 제가 처음 만들었던 C# (ExcelDna) 앱입니다. 그런데 파이썬은 엑셀 추가기능을 직접적으로 만드는 것이 안됩니다.
C#을 잘 써보고 싶은 욕구에 (20년전 대학교 때 살짝 배운 C++ 과 그냥… blazor 앱 샘플을 돌려보니 이뻐서…, 그리고 멋지잖아요…) 다음 기능을 추가해보려고 합니다. 5년, 10년 지나서 누군가가 제가 만든 것을 쓰면서 월 2000원이라고 구독해주면 이라고 꿈을 꿔보기도 합니다.
그래서
- 기존에 만들어 둔 엑셀XLL 앱을 자동설치하게 하는 배포’기능’을 추가하고,
- 여기에 포함되는 DLL을 불러와서 사용하는 공학용 계산기같은 WPF을 추가하고 한번에 설치되게끔 해보고 싶습니다.
이 것이 가능한 방법일까요?
제가 그동안 고민해 본, 시도해 본 사항입니다.
-
WPF라고 정한 이유는 제가 추가할 독립실행 앱이 계산기 수준이라 용량이 2MB 정도 충분합니다. 그리고 exe파일처럼 복사해서 이동하더라도 실행되게끔 하고 싶었습니다. 그런데 여기서 좋아보이고 UI도 깔끔해 보이는 Blazor App, WinUI3, Unoplatform 등의 기본적인 창에 BUTTON 1개만 추가해도 기본적으로 용량이 50MB, 100MB이상이 되기에 그런 큰 용량의 배포 프로그램을 원하지 않습니다.
-
WinUI3 앱은 Run without debugging이나 publish를 해서 실행해 보면 exe/바로가기가 생성되지 않고 윈도우 App 메뉴에서 선택해서만 실행하는 형태로 보였습니다. 간단히 exe실행파일만 복사해서 사용할 수 없는 것처럼 이해했습니다.
-
Excel Add-in /사용자 함수는 Javascript로도 구현이 가능합니다. (요즘에 MS가 VBA대신 Javascript API를 밀고 있습니다. _파이썬 넣어줄지 알았는데, 안 넣어줍니다) C# 사용자함수를 만들고 그 이후에 이 사실을 알게 되어서 현재는 Javascript로 된 Add-in을 만들어 보기도 했습니다. 제가 위에서 언급한 WPF처럼 만들고 싶어서, VSCODE를 만들었다고 들은, Electron으로 간단하게 만들어보니 이 것 또한 덩치가 100MB가 넘어가서 포기를 했습니다.
-
Blazor (WASM)으로 JS interop을 만들어서 엑셀추가기능을 구현하고 + 독립앱으로 실행될 Blazor앱을 만들면 어떨까 해서 시도해 봤습니다. Blazor(C#)으로 만든 Excel add-in proj는 현재 debugging이 지원이 안됩니다. 관련 유튜브가 있어서 따라해 봤는데, 거기서 설명해 주시는 MS MVP분도 안되네~ 하시곤 성공을 못하셨습니다.
-
어느 덧 3년 정도의 시간동안 짬짬이 삽질을 했었는데…
‘왜 이렇게 돌아왔는가’ 라고 생각해 보면 Window사용자 뿐만 아니라 Mac사용자도 사용하게끔 하려고 했던 것이 가장 큰 이유였습니다. 제 업이 공학설계다 보니 회사 초년에 공부하느라 외국 커뮤니티에서 자료를 찾아보던 일이 많았었습니다. 도움을 많이 받았었는데 15년 정도 지나니 제가 받은 도움을 돌려줄 시기가 오기도 합니다. 그런데 외국 대학생/초년생들은 MACos 사용자가 생각보다 많고 최근에는 web App이 활성화 되다보니 Window를 벗어나 구글스프레드시트나 Office365 Web엑셀에서의 활용도도 고려하면 좋을 것 같다는 생각을 하게 되어 이리저리 찾고 삽질이 길어진 듯 합니다. -
어쨋거나 이런 저런 위와 같은 과정을 겪으면서 일단 뭐라도 결과물을, 끝을 맺는 게 중요할 것 같아서 WPF 앱을 추가해서 배포를 해보자는 것이 제 생각이고 이후 또 몇 년이 지나서 새로운 더 나은 방법이 있다면 그것을 추가로 시도해 보는 것이 현재로써는 최선의 선택이라고 판단을 하고 있습니다.
-
짧게 설명하고, 시간을 빼앗지 않고 싶은 마음이 크지만, 제 실력이 그러하질 못해서 이렇게 넋두리 처럼 쓰게 되었습니다. - 제 주변에 C#. NET을 사용하는 사람은 한 명도 없습니다.
그래서 시야?라고 할 만한 것이 없이 저 혼자서 인터넷을 찾고 책을 보고 유튜브를 보는 것이 전부인지라 귀한 경험을 조금이라도 나누어 주시면 감사하겠습니다.
방향성만 알려주시면 또한 천천히 공부해 보겠습니다.
긴 글 읽어주셔서 감사합니다.