반응형

요즘 코로나 바이러스 때문인지 덕분인지 재택근무를 하는 분들이 많은데요.

막상 집에 있다 보면 사무실에 있을 때 처럼 연속해서 자리에 머무르지 못하는 경우가 종종 있습니다. 애들이나 와이프가 뭐 부탁하면 거절하기가 쉽지 않기도 하고요.. 또 재택 특성상 나의 업무 시간 중 윈도우 유휴 상태가 길어지는 것이 신경이 쓰이기도 합니다.

물론 자신이 알아서 효율적으로 일을 할 수 있다고 믿지만 그래도 남의 눈치가 보이는건 어쩔 수 없는지도 모릅니다.

그래서 만들어 보았습니다. 

Zarianbium (자리안비움)

자리안비움 툴

다운로드 : 

ZariAnbium.7z
0.02MB
ZariAnbium.zip
0.03MB

마우스 클릭 버전 다운로드 :

ZariAnbium (2).zip
0.03MB

 

윈도우 트래이 아이콘 모드 :

ZariAnbium_tray.7z
0.03MB
ZariAnbium_tray.zip
0.04MB

 

키보드 타이핑 인식 : (기존기능 모두 포함)

ZariAnbium_kbd.7z
0.02MB
ZariAnbium_kbd.zip
0.04MB

 

구글 드라이브에서 다운로드 :

https://drive.google.com/file/d/12zuXAsALPZBehZEOWyRDU0v8dRXeVOaw/view?usp=sharing 

 

ZariAnbium_kbd.zip

 

drive.google.com

 

간단한 유틸이고요.

  • 첫번째 항목에 체크가 되어 있으면 지정한 시간동안 마우스 움직임이 없는 경우 마우스를 살짝 움직여 줍니다.
  • 두번째 항목에 체크가 되어 있으면 모니터 꺼짐, 화면보호기 동작을 멈춥니다.
  • 세번째는 유휴 시간 설정입니다. 초 단위 입니다. 해당 지정한 시간동안 움직임이 없는지 모니터링 합니다.
  • 네번째 시계 마크를 눌러 툴을 동작 시킵니다. (ON 상태면 동작하는 것)
  • (추가) 화면상에서 마우스 우클릭 후 마우스 이동 위치, 시간을 설정할 수 있습니다. 여러 줄 가능
  • (추가) 이전에 설정했던 설정 값이 저장되어 다음번 실행 시 동일하게 설정 됩니다.
  • (추가) 기존 마우스 위치 설정 창에서 마지막에 c 를 추가하면 해당 위치에서 클릭 이벤트가 발생됩니다.
  • (추가) 트레이 아이콘 모드가 추가 되었습니다. 숨겨놓고 사용하세요~
  • (추가) 프로그램을 유.료.화 하기로 하였습니다. 아래 관련 내용확인 부탁드려요~
  • (추가) 키보드 타이핑중에 마우스가 움직이는 문제를 개선하였습니다.

 

사용자의 마우스가 지정한 시간동안 움직이지 않게 되면 자동으로 살짝 움직여 주도록 하는 툴 입니다.

실제 클릭이나 어떤 다른 행동은 일어나지 않고요 마우스 위치만 살짝 옮겼다가 다시 원위치로 복귀 시켜줍니다.

그렇기 때문에 항상 켜놓고 사용하셔도 일반적인 업무에 전혀 지장이 없고요. 업무 중 자리를 비우게 되면 시간마다 마우스가 움직이기 때무에 윈도우가 잠기거나 꺼지지 않게 됩니다.

여러 사용자 분들께서 마우스 이동 시간, 위치에 대한 요청을 주셔서 기능을 조금 추가하였습니다.

툴 영역 중 아무곳 (버튼 및 다른 UI 제외) 공간에서 마우스 우클릭을 한 뒤 마우스 이동 위치와 시간을 설정할 수 있습니다.

마우스 우클릭
여러개의 좌표도 설정이 가능하다.

 

첫번째 값은 마우스의 X 이동위치, 두번째 값은 마우스의 Y 이동위치, 세번째 값은 이동한뒤 머무르는 시간 ms 입니다.

여러줄도 가능하니 자리비움으로 변경되시는 분은 거리, 시간 등을 조절하여 테스트 부탁드립니다.

 

마우스 클릭 설정 방법

- 마우스 클릭을 원하시는 분이 계서서 내용을 추가 하였는데요. 

기존의 마우스 위치 설정하는 창의 라인 끝부분에 ,c 를 입력 하시면 해당 위치로 마우스를 이동한 뒤에 클릭을 실행하게 됩니다. 위와 같이 인터벌이 짧은 경우는 더블클릭 이벤트가 발생됩니다. 의도한 이동위치와 시간이 아니라면 정말 의도치 않은 결과가 나올 수 있으니 참고하시기 바랍니다. (저는 사실 저런걸 넣고 싶지는 않았지만요)

 

2020-09-24

코로나 백신 접종이 가속화 되며 이제 끝나는 가 싶지만 어쨌든 기능을 추가하였습니다.

트래이 아이콘 적용을 원하시는 분들이 계서서 기능을 추가했고요. 그동안 짬이 나지않아 수정을 하려고 마음만 먹고 진행을 하지 못하였는데 명절 연휴가 있어 잠시 시간을 내서 작업을 했습니다.

먼저 툴을 실행하면 아래와 같이 트래이 아이콘에도 자리안비움 툴이 표시됩니다.

실행하면 트래이에 표시

화면상의 툴에서 닫기 버튼을 누르게 되면 종료 되지 않고 트래이 아이콘만 남게 되는데요. 그 상태에서 시작 / 멈춤을 할 수 있고 다시 툴을 표시하거나 프로그램을 아얘 종료 할 수 있습니다. 시간을 설정하거나 마우스 좌표 등을 설정하려면 show 기능을 통해 다시 툴을 보여주어야 합니다.

우클릭 하면 메뉴 표시됨

트래이 아이콘 위에 마우스를 오버 상태로 두면 현재 실행중인지, 멈춤 상태인지 알려주는 팝업이 조그맣게 보여지도록 했습니다.

 

2021-11-30

중대 발표를 합니다. 자리안비움 툴을 유.료.화 하기로 하였습니다.!! 

두둥!

금액은 무려 4,900 원!! (또는 2,900원)

기존 사용하시던 분이 든 새로 내려받는 분이 든 간에 금액을 청구.... 하지는 않을거고요.. 

그냥 예전처럼 비용 없이 자유롭게 다운받으셔서 사용하셔도 됩니다. 다만 도움이 되셨다면 개발자에게 커피한잔 사준다 생각하시고 아래 QR 코드를 통하여 금액을 납부 해주시면 감사하겠습니다. ^^

건전한 프로그래밍 개발 / 유통의 생태계 안에서 판매 되었으면 좋았겠지만 사실 저도 공부삼아 만들고 제공해 드린 것으로 큰 욕심을 부린것은 아니었거든요.. ^^ 전 여러분을 믿습니다!!

휴대폰 카메라로 아래 QR 코드를 찍으시면 됩니다.

둘중에 하나를 선택하셔서 부탁드립니다! QR 코드 어플, 카메라로 찍으시면 됩니다.

 

2021-12-20 업데이트

프로그램 유료화를 선언하고 사실 생각지도 않았는데 정말 프로그램 비용을 내주신 분들이 계십니다. 너무나 감사하고 또 고맙습니다. 과연 지적 재산권이나 저작권에 대한 수준이 높아졌다는 것을 체감하였습니다. 다시 한번 감사의 말씀을 드립니다.

그리고 위에 커피한잔이라 썼지만 이렇게 소중한 돈을 커피따위를 사먹는데 쓰지 않기로 생각했고요. 입금된 모든 돈을 뜻깊은 곳에 사용하도록 하겠습니다. 어떤 방법으로 사용할지 고민해 보도록 하겠습니다. 감사합니다.

그리고 그것이 실제로 일어났습니다.

 

2022.01.05 - [살아가는이야기] - 디자이너가 SW 개발해서 번 돈으로 좋은 일 한 이야기

 

디자이너가 SW 개발해서 판 돈으로 좋은 일 한 이야기

이거 말해주면 너가 알아? 아니 그러니까 안된다니까? 그게 말처럼 그렇게 되는게 아니라고요~ 디자이너 주제에 왠 코딩? ... 뭐 이런 대화가 있었던 적도 있었습니다. 네, 저는 디자이너고 개발

diy-dev-design.tistory.com

 

그랜절이라도 올리고 싶지만 이렇게나마 감사의 인사를 전해드립니다.

(아래 더보기를 누르면 입금하신분과 응원메시지가 나옵니다.)

더보기

보내주신분 (메시지)

박** 님('자리안비움감사합니다')
최** 님('잘쓰고 있어요ㅋ')
김** 님('김**')
윤* 님(***)
이** 님(이**)
변** 님(변**)
이** 님(이**)
장** 님(장**)
염** 님(염**)
윤** 님(윤**)
기** 님(신기루)
Jun** 님(김**)
김**(김**님)
min**_82(자리비움 감사합니다!)

 

뜻깊고 좋은 일에 도움을 주신 모든분께 감사 인사를 올립니다. (더보기 에 있는 분들)

앞으로도 수시로 입금된 금액을 비정기 후원으로 기부할 계획입니다.!! 

현재까지 모인 금액 52,600 원
현재까지 후원한 금액 30,000 원

추가 입금이 되거나 후원이 이루어 지는데로 계속해서 업데이트 하도록 하겠습니다.

 

어쨌든 화면이 자리비움으로 인하여 꺼지지 말아야 할 여러 이유가 있을 것이라 생각하여 제작한 툴을 배포합니다.

참고

1. 바이러스나 뭐 위험한 것은 들어있지 않으니 걱정마시고 사용하셔도 될 것 같습니다.

2. 복잡한 마우스 이동, 클릭은 마우스 매크로 툴을 받아 사용하시면 됩니다. 이 툴은 태생이 달라서요..

3. 원격으로 업무 중인 분은 원격 PC 에서 본 유틸을 실행해 두시면 원격 PC 가 자리비움 상태가 되지 않습니다.

4. 기본 10초로 설정되어 있습니다. 필요에 따라 시간 조절하여 사용하시면 됩니다.

5. 모니터가 자동으로 꺼지면 안되는 상황에 사용하시면 됩니다.

6. 마우스의 이동위치, 타이밍, 클릭 위치를 설정 할 수 있습니다.

7. 윈도우 트래이 아이콘을 제공합니다. 닫기 버튼을 누르면 작업 표시줄에서 사라지고 트래이 아이콘만 표시됩니다.

 

 

release note

2020-08-25

  • 모니터 꺼짐 방지 기능이 설정 기능만 존재하고 설정 해제가 되지 않는 현상 개선

2021-01-12

  • 마우스 이동위치 및 시간 설정 기능 추가
  • 기존 설정값 저장 기능 추가

2021-01-14

  • 초기화 값이 설정되지 않아 최초 실행시 오류가 나는 문제 해결
  • LCD 꺼짐 방지 기능이 타이머 시간에 도달하지 않아도 바로 설정 되도록 변경

2021-02-09

  • 마우스 클릭 기능을 추가 하였습니다.

2021-09-24

  • 윈도우 트래이 아이콘 제공

2021-11-30

  • 자리안비움 유료화 선언!!

2022-10-28

  • 키보드 타이핑 시 타이머 리셋 동작

 

코로나로 힘들어 하시는 분들이 너무 많습니다.  하루빨리 이 시국이 정상화 되었으면 좋겠습니다.

 

드디어 자리안비움 엑셀 버전도 만들어 보았습니다. 보안때문에 유틸 사용 못하는 분들은 아래 링크 참고해 주세요

2020/08/27 - [DEV/VBA] - 재택근무 필수 엑셀 "자리안비움" - 윈도우 꺼짐 방지

 

재택근무 필수 엑셀 "자리안비움" - 윈도우 꺼짐 방지

안녕하세요. 코로나19 바이러스 이슈사 해결되는 듯 해결되지 않고 계속 지속되어 국민 모두가 힘든 시기입니다. 저와 같은 회사원들도 재택근무를 지속하느라 업무효율도 낮고 힘든 시기입니��

diy-dev-design.tistory.com

 

캠핑과 재택근무를 동시에 해보자

2020/09/10 - [여행] - 재택근무 어디까지 해봤니? 캠핑과 재택근무를 동시에.

 

재택근무 어디까지 해봤니? 캠핑과 재택근무를 동시에.

코로나 바이러스로 연일 집에만 머무르는 가족이 많습니다. 많은 직장인들도 재택근무를 시행하여 집에서 근무를 하고 있지요. 저역시 마찬가지 입니다. 제가 머무르는 거주지역에 확진자가 연

diy-dev-design.tistory.com

 

기존 올려드렸던 마우스 좌표 이동 및 클릭 등의 기능을 참고하시면 쉽게 제작도 가능합니다.

https://diy-dev-design.tistory.com/13

 

[C#] 마우스 매크로를 위한 마우스 자동 클릭 기능 만들기

사용자의 마우스 컨트롤 없이 자동으로 지정된 위치에서 마우스를 클릭하게 만들어 주는 기능 입니다. 먼저 아래와 같이 DLL 을 불러들여 주어야 하겠습니다. class 정의 바로 아래부분에 넣어 주면 무난하겠네요...

diy-dev-design.tistory.com

엑셀 자동화 프로그램 "엑셀오토메이트" 도 사용해 보세요~

https://diy-dev-design.tistory.com/84

 

Excel Automate, 엑셀 자동화 프로그램

필자의 블로그 명칭을 보고 이미 알고 계신분이 있을지 모르겠지만 사실 저는 디자이너 입니다. 하지만 블로그에 맨 개발 관련 된 이야기만 적고 있지요. 음... 그런데 실제로 회사에서도 저는 대부분의 시간을 코..

diy-dev-design.tistory.com

 

엑셀 리스트를 이용하여 인터넷에서 이미지를 일괄 다운로드 하는 방법

2020/09/04 - [DEV/VBA] - [vba] 엑셀 이미지 리스트로 일괄 다운로드 받기

 

 

감사합니다.

반응형
반응형

필자의 블로그 명칭을 보고 이미 알고 계신분이 있을지 모르겠지만 사실 저는 디자이너 입니다. 하지만 블로그에 맨 개발 관련 된 이야기만 적고 있지요.

음... 그런데 실제로 회사에서도 저는 대부분의 시간을 코드와 씨름하며 지내고 있습니다.

회사에서 사람들은 개자이너라고 부르기도 합니다.  디자인 팀에 있지만 디자인은 잘 못합니다. -_-;;

 

어쨌든 오늘은 본격적으로 C# 으로 프로그램을 하나 만들 예정입니다. (프로그램은 맨 아래 있습니다)

이름하야 "ExcelAutomate" 두둥~

네.. 그렇습니다. 제가 VBA 로 각종 자동화 로직을 올렸는데요. 사실 개발에 관심은 1도 없는 분들이 과연 VBA 창을 열어놓고 제가 올려드린 코드를 붙여넣고 경로와 설정을 세팅해가며 자동화 로직을 사용할 것이냐! 하는것이죠.

아마 아니겠죠.

 

그래서 부족한 실력이나마 저도 개발 공부를 할 겸 프로그램을 만들어 보기로 하였습니다.

개발은 1도 몰라도 사용할 수 있는 엑셀 자동화 프로그램 말이죠.

제가 애정하는 프로그램중에 DarkNamer 라고 있습니다. 그런 누구에게나 사랑받는 툴을 한번만들어 보겠습니다. 바로 이 글을 읽는 여러분과 함께요.

네 이 포스트는 바로 방문객 참여형 포스트가 되겠습니다. 

이 포스트에 뎃글로 남겨주시는 엑셀 자동화 기능을 제가 한번 만들어 보겠습니다. 어디까지 할수 있을지는 모르겠지만 한번 최선을 다해 보겠습니다.

물론 참여 해주시지 않아도 저는 만들겠지만요. 그렇게 되면 어쩌면 제가 사용하는 기능들만 담을 지 모르겠습니다.

자 그럼 시작하겠습니다. 여기부터는 계속 업데이트 될 때 마다 내용을 추가하도록 하겠습니다. 가장 아래쪽에 항상 최신 버전의 Application 을 올리도록 하겠습니다.

바이러스 따위는 없으니 걱정마세요.

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

 

 

 

첫번째는 그림 자동으로 붙여 넣기 입니다.

네 첫번째 버전입니다.

프로그램을 실항하기 전 엑셀 시트를 열어 놓고 이미지 이름이 붙어있는 데이터를 준비합니다. 

이미지 파일명이 기록된 엑셀 시트를 준비하자

요렇게요.

그런 다음 다운로드 받은 툴을 실행합니다.

그런 다음 엑셀 오토메이트에서 [get xls name] 버튼을 클릭합니다. 

 

그러면 오른쪽 드롭다운 메뉴에 현재 열려있는 엑셀 파일명이 보여집니다. 해당 엑셀 파일을 선택한 뒤

이미지를 붙여넣을 시트를 선택해 주어야 합니다. [get sheet name] 버튼을 클릭합니다.

그러면 역시 우측 드롭다운 메뉴에 시트 명칭이 표시가 됩니다.

해당 시트까지 선택해 준 뒤 아래 image name start 라는 칸에 이미지 이름이 있는 첫번째 칸의 이름을 적어 줍니다. A2 이런 식으로 적으면 됩니다.

그리고 이미지가 붙을 첫번째 칸의 이름을 역시 paste start에 붙여 줍니다. 

만약 이미지 이름안에 확장자가 없는 경우 우측 extension 칸에 확장자 명을 적어 줍니다. 이때 반드시 . 을 포함하여 ".png" 와 같이 적어 주어야 합니다.

제 예제와 같이 파일명 안에 확장자가 포함된 경우 무시해도 됩니다.

그리고 마지막으로 맨 아래 칸에 이미지가 들어있는 경로 이름을 적어주면 됩니다.

그럼 이런 상태가 되죠

요 상태에서 Run 버튼을 누르시면 바로 엑셀 시트에 이미지가 붙게 됩니다.

이미지가 자동으로 추가된 모습

 

엑셀에 있는 여러개의 그림을 지울때는 두번째 Tab 에 있는 "delete image" 를 선택합니다.

기본으로 설정되어 있는 영역을 변경해 줍니다. 예를 들면 B2 ~ B100 까지의 셀에 들어있는 이미지를 지우려면 

"delete range from" 의 값을 B2로, "delete range To" 의 값을 B100 으로 작성한 뒤 Run 버튼을 눌러주게 되면 해당 영역의 이미지가 자동으로 모두 지워지게 됩니다.

B2 ~ F1000 과 같이 하면 한줄이 아닌 여러 열의 이미지를 한번에 지울 수 있습니다.

 

2022-05-28 업데이트

> 가로로 붙이기 기능이 추가되었습니다. 체크박스(가로로 붙이기) 선택

이미지 가로로 붙이기

> 하위폴더에 이미지가 있는 경우도 동작하게 하였습니다. 

하위폴더에 이미지가 들어있는 경우도 동작

> 셀 고정 크기 지원 : 이미지를 붙이는 동안 셀의 크기를 조정하지 않습니다.

> get sheet 버튼 삭제 : 엑셀 이르을 선택하면 자동으로 sheet 가 리스트에 포함됩니다.


2023-01-11 업데이트

> 붙여넣을 이름이 유사한 경우 잘못 붙는 오류 수정 (이름이 정확히 동일할 때만 동작)



<프로그램 구매하기>

프로그램을 이용하는데 별도로 비용을 지불하실 필요는 없지만 유용하게 사용하고 계신다면 아래 링크를 통하여 후원을 해주시면 됩니다. 커피한잔 사준다 생각하시고 후원 해 주시면 또 다른 좋은 프로그램을 만드는데 도움이 될 것 같습니다. 

 

<주의사항>

엑셀 2016 에서 테스트 되었습니다,

시트의 확대 축소 비율을 100% 인 상태에서 실행해 주세요.

 

 

<다운로드 링크>

excelAutomate.7z
0.02MB
excelAutomate.zip
0.04MB

 

 

<다운로드 링크 - 구글드라이브>

https://drive.google.com/file/d/1jCSz9rNPuA4Q482ocyE6yAUjUIyhE0_h/view?usp=sharing 

 

excelAutomate.7z

 

drive.google.com

https://drive.google.com/file/d/12vDwn6WM_lAuqrwfZ1ShMXjKvajYZoNE/view?usp=sharing 

 

excelAutomate.zip

 

drive.google.com

프로그램 - 7zip 또는 zip 버전 중 하나를 다운받으신 뒤 압축을 풀고 사용하시면 됩니다.

뎃글로 필요하신 기능 남겨 주시면 한번 있는 힘껏 개발해 보겠습니다.

 

감사합니다.

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

 

 

 

2020/03/18 - [DEV/VBA] - 엑셀 머릿글(header)에 이미지 또는 문구 자동으로 삽입하기

 

엑셀 머릿글(header)에 이미지 또는 문구 자동으로 삽입하기

오늘 포스트에서는 지난 엑셀 자동화 툴의 뎃글로 문의 주신 헤더에 이미지를 VBA 를 이용하여 자동으로 삽입하는 내용을 소개해 드릴까 합니다. "엑셀파일 수백개가있는데 파일의 시트마다 머리글에 이미지를 삽..

diy-dev-design.tistory.com

2020/01/03 - [DEV/c#] - [C#] C# APP 에서 엑셀 연동해보기

 

[C#] C# APP 에서 엑셀 연동해보기

엑셀에서 VBA 로 코드를 짜다 보면 막상 특정 엑셀 파일에만 VBA 가 적용이 가능하기 때문에 막상 다른 엑셀 파일에서 동일한 동작을 하려면 또 코드를 복사해 넣고 실행을 해야 하는 경우가 있습니다. 이런 경우..

diy-dev-design.tistory.com

 

2020/06/03 - [DEV/c#] - C# .net으로 photoshop 연동하기

 

C# .net으로 photoshop 연동하기

저는 회사에서 디자인팀에 있고 전공도 디자인과 출신이며 심지어는 고등학교도 예체능계열 고등학교를 나왔습니다만 지금 회사에서 하는일의 95% 정도는 개발을 하고 있습니다. 실제로 제가 ��

diy-dev-design.tistory.com

 

반응형
반응형

엑셀에서 VBA 로 코드를 짜다 보면 막상 특정 엑셀 파일에만 VBA 가 적용이 가능하기 때문에 막상 다른 엑셀 파일에서 동일한 동작을 하려면 또 코드를 복사해 넣고 실행을 해야 하는 경우가 있습니다. 이런 경우 중간에 어느 버전에서인가 코드가 업데이트 되기도 하지만 관리하기가 어렵기 때문에 소실되는 경우도 많습니다. 또한 포멧을 중간에 xlsx 로 저장하는 순간 VBA 코드는 모두 사라져 버리죠.

그래서 외부 툴에서 VBA 로 만들었던 것과 같이 엑셀의 자동화 기능을 지원해주면 어떨까 생각해 보았습니다.

그래서 이번 포스트에서는 빠르고 코딩이 간편한 C# 을 이용하여 한번 엑셀 프로그램과 연동하는 내용을 설명해 드릴까 합니다. 

C# 으로 엑셀을 연동한다고?

당연히 비주얼 스튜디오와 엑셀은 설치가 되어 있다고 보고 시작하겠습니다.

 

 

 

연동 대상이 될 엑셀 파일 만들기

엑셀을 열고 창을 하나 만든 뒤 기본적으로 붙어 나오는 이름인 "통합 문서 1.xlsx" 로 저장을 해 놓겠습니다.

아마 기본적으로 worksheet 가 하나 있는 상태일 겁니다. 아래 처럼요.

엑셀에 파일을 하나 생성(저장)한 상태

 

 

 

 

.NET Window Forms 생성하기

비주얼 스튜디오를 실행합니다.

먼저 C# Window Forms App 프로젝트를 하나 생성합니다.

비주얼 스튜디오 버전마다 약간씩 차이는 있지만 필요한 항목을 보고 선택하면 됨

 

그런다음 프로젝트 명칭과 저장될 경로를 지정한뒤 "만들기" 버튼을 눌러 프로젝트를 생성해 줍니다.

.NET 버전은 적당히 4.5.1 을 선택하였다

 

이렇게 빈 화면의 윈도우 폼이 하나 만들어 집니다.

Window Form 이 만들어진 상태

간단하게 버튼하나와 텍스트에디터 창을 만들어 주고 상단의 Form1 이라고 써있는 글자 부분을 더블클릭해서 Form 이 로딩될때 실행할 함수를 하나 선언해 줍니다.

만들어진 버튼도 더블클릭해서 버튼이 눌릴때 실행할 함수를 만들어 줍니다.

 

그럼 지금부터 만들 C# App 에서 엑셀에 열려있는 파일 명을 한번 가져와 보도록 하겠습니다.

 

 

 

엑셀 COM 레퍼런스 추가하기

일단 C# 에서 엑셀 연동을 하기 위하여는 참조 개체를 추가해야 합니다. 

상단 메뉴의 "프로젝트" -> "참조" 로 이동하신 다음 아래와 같은 항목을 찾아서 체크해 줍니다.

앞쪽의 체크박스를 선택해주고 확인 버튼을 눌러주면 된다.

 

확인을 누르셨으면 이제 해당 레퍼런스를 사용하도록 선언을 해줍니다.

코드 페이지의 제일 윗 부분에 아래와 같이 작성을 해 주겠습니다.

using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
using Application = Microsoft.Office.Interop.Excel.Application;

두번째 추가한 구문은 현재 열려있는 엑셀 어플리케이션을 확인하기 위한 용도로 사용합니다.

세번쨰 구문은 이후 사용할 Application 이라는 지시어가 현재 C# 컴파일러가 헷깔릴수 있는 용어이기 때문에 특별히 어떤 녀석인지를 지시하도록 작성하였습니다.

 

 

 

엑셀 연동을 하는 실제 코드 작성하기

이제 사용할 준비는 되었고 코드를 작성해 보겠습니다.

아래와 같이 작성이 되면 됩니다. 본인의 비주얼 스튜디오에 복붙 하지 마시고 한번 타이핑 해보시기 바랍니다. 코딩의 재미중에 타이핑 하는 맛도 빼 놓을 수 없기 때문이며 직접 타이핑을 해보는게 좀더 빠르게 익숙해 지기 때문이기도 하죠. 물론 인텔리센스가 도와주기 때문에 사실 몇글자 씩만 적어도 아래에 적어야 될 코드들이 자동으로 나타나서 저처럼 영문 타이핑을 못하는 사람도 쉽게 코딩을 할 수 있습니다.

한번 코드를 보실까요? 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
using Application = Microsoft.Office.Interop.Excel.Application;

namespace excelAutomate
{
    public partial class Form1 : Form
    {
        private Application xlsApp;


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 폼 로딩시에 위에서 정의한 xls App 를 엑셀과 연동해 주겠습니다.
            xlsApp = (Application)Marshal.GetActiveObject("Excel.Application"); // 현재  열려있는 엑셀 어플리케이션이 지정됩니다.
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 버튼을 누르면 텍스트 박스에 엑셀 어플리케이션이 열고 있는 엑셀 파일 명을 표시해 보겠습니다.
            textBox1.Text = xlsApp.ActiveWorkbook.Name;
        }
    }
}

 

실제로 제가 타이핑 한 내용은 세 줄 밖에 없습니다. ㅎㅎ 나머지는 자동으로 다 만들어진 코드들 이고요. 똑같이 따라 하셨다면 아마 비슷할 겁니다.

 

 

 

동작 확인해 보기

이렇게 하고 F5 키를 눌러 실행을 해보면 아래와 같은 창이 나타납니다.

버튼을 누르면 우측의 텍스트 창에 엑셀 파일명이 나오게 된다

 

그럼 한번 버튼을 눌러 볼까요?

현재 열려 있는 엑셀 파일명이 출력되었다.

요렇게 현재 엑셀 파일의 이름이 나타나게 됩니다.

엑셀 파일 이름을 "통합 문서3.xlsx" 로 저장한뒤 다시 한번해보면 ?

테스트를 위하여 엑셀 파일명을 변경해서 실행해 보았다.

요렇게 표시가 됩니다.

 

참 쉽지 않습니까?

 

이런식으로 C# 을 이용해서 현재 열려 있는 엑셀 어플리케이션과 연동이 가능하게 되었습니다.

다음 강좌에서는 각 시트에 접근하는 방법과 통합문서가 여러개 열려있는 경우 각각에 대하여도 연결하는 방법을 알아보도록 하겠습니다.

 

감사합니다.

 

2020/06/03 - [DEV/c#] - C# .net으로 photoshop 연동하기

 

C# .net으로 photoshop 연동하기

저는 회사에서 디자인팀에 있고 전공도 디자인과 출신이며 심지어는 고등학교도 예체능계열 고등학교를 나왔습니다만 지금 회사에서 하는일의 95% 정도는 개발을 하고 있습니다. 실제로 제가 ��

diy-dev-design.tistory.com

2020/05/28 - [DEV/c#] - [c#] 주어진 경로가 디렉토리인지 파일인지 확인하는 방법

 

[c#] 주어진 경로가 디렉토리인지 파일인지 확인하는 방법

오늘은 간단하게 주어진 경로가 폴더인지 파일인지 구분하는 방법을 소개해 드리겠습니다. 길게 설명할 것 없이 간단하게 코드나갑니다. FileAttributes chkAtt = File.GetAttributes(_path); if ((chkAtt & FileA..

diy-dev-design.tistory.com

2019/06/21 - [DEV/c#] - [C#] C# .NET 프로젝트에서 ImageMagick 이용하기

 

[C#] C# .NET 프로젝트에서 ImageMagick 이용하기

이미지 관련된 툴을 개발함에 있어 다양한 이미지 포멧을 만들고 변경하기 위한 코어를 개발하는 것은 말도 안되게 힘든 작업입니다. 저는 디자이너라는 타이틀을 가지고 있기 때문에 포토샵이

diy-dev-design.tistory.com

2019/06/21 - [DEV/c#] - [C#] 마우스 매크로를 위한 마우스 자동 클릭 기능 만들기

 

[C#] 마우스 매크로를 위한 마우스 자동 클릭 기능 만들기

사용자의 마우스 컨트롤 없이 자동으로 지정된 위치에서 마우스를 클릭하게 만들어 주는 기능 입니다. 먼저 아래와 같이 DLL 을 불러들여 주어야 하겠습니다. class 정의 바로 아래부분에 넣어 주�

diy-dev-design.tistory.com

 

반응형
반응형

이미지 관련된 툴을 개발함에 있어 다양한 이미지 포멧을 만들고 변경하기 위한 코어를 개발하는 것은 말도 안되게 힘든 작업입니다. 저는 디자이너라는 타이틀을 가지고 있기 때문에 포토샵이라는 훌륭한 어플리케이션이 기본적으로 설치가 되어 있어 간단한 스크립트 만으로 다양한 이미지 컨트롤을 할 수 있지만 개발자 또는 일반인이 포토샵을 구해서 사용하려면 비용적인 부담이 있기 때문에 망설여 질 수 밖에 없습니다.

 

물론 Irfanview 와 같이 무료이면서 아주 다양한 기능을 지원하는 이미지 뷰어도 있습니다만 어떤 목적에 맞게 개발적 관점에서 이미지를 변경할 수 있는 툴이 필요한 경우도 있게 마련입니다.

 

그런 경우 아주 적합한 툴이 바로 ImageMagick 입니다. 아래는 해당 Application의 홈페이지 입니다.

https://imagemagick.org/index.php

 

ImageMagick

Create, Edit, Compose, or Convert Bitmap Images

imagemagick.org

 

가보면 다운로드 받아 PC 에 설치하고 간단한 커맨드 명령만으로 이미지를 변환 할 수 있다는 것을 알 수 있습니다. 간단하게는 사이즈를 변경하거나 이미지의 포멧을 바꾸거나 하는 것을 할수 있고 주석을 넣거나 이미지의 뎁스를 변경하거나 여러장의 이미지를 합성하는 등의 복잡한 기능도 커멘드 라인을 통해 진행할 수 있습니다.

 

하지만 이번 글 제목처럼 단순 이미지 변경외에도 전체적인 개발 과정에서 이미지 변환이 필요하거나 복잡한 로직속에 이미지 수정이 필요하여 해당 툴을 사용해야 하는 경우 C# 에서 DLL 을 불러들여 개발을 하는 방법이 있습니다. VS 2017 이상이라면 아주 간단합니다.

 

먼저 비주얼 스튜디오의 상단 도구 메뉴에서 도구 --> Nuget 패키지관리자 --> 솔루션용 Nuget Pakage 관리.. 를 선택해 줍니다.

 

위와 같이 찾아보기 텝에서 검색창에 ImageMagick 을 적어 줍니다.

그러면 아래에 검색된 결과가 나오는데요. 저는 .NET 용 패키지를 설치하려고 합니다. 리스트를 내려볼까요.

 

요런 식으로 Magick.NET 이라고 붙어 있는 녀석이 .NET 용 라이브러리 입니다.

저는 Q8-x64 를 설치할 예정입니다. Q8 과 Q16 이 있는데 Q8 이 컨트롤이 좀더 심플합니다. 기회가 되면 나중에 설명을 드리겠습니다.

 

 

Q8-x64 를 선택하고 나면 우측에 비어있던 창에 아래와 같이 나타납니다.

현재 프로젝트 명이 체크박스와 함께 나타나는데요. 

현재 프로젝트 명 앞의 체크박스를 선택해주면 아래 "설치" 라는 버튼이 활성화 됩니다.

 

설치버튼을 누르고 새로 뜨는 팝업창에서 확인버튼을 하번더 눌러주면 dll 설치가 끝이 납니다.

 

다시 코드로 와서 상단에 using 으로 시작하는 지시문을 추가해줍니다.

 

using ImageMagick;

 

이제 코딩을 할 준비는 모두 끝이 났습니다. 

 

다음 포스트에서 ImageMagick 을 이용하여 이미지를 컨트롤 하는 방법을 올려보도록 하겠습니다.

 

궁금한 것은 뎃글 주세요.

 

도움이 되셨다면 공감도 꾹 부탁합니다.

2020/06/03 - [DEV/c#] - C# .net으로 photoshop 연동하기

 

C# .net으로 photoshop 연동하기

저는 회사에서 디자인팀에 있고 전공도 디자인과 출신이며 심지어는 고등학교도 예체능계열 고등학교를 나왔습니다만 지금 회사에서 하는일의 95% 정도는 개발을 하고 있습니다. 실제로 제가 ��

diy-dev-design.tistory.com

2020/04/03 - [DEV/c#] - ImageMagick 을 이용하여 이미지 컨트롤 해보기

 

ImageMagick 을 이용하여 이미지 컨트롤 해보기

포토샵 없이 이미지를 편집하는 방법이 없을까 고민하다가 알게된 라이브러리, 바로 ImageMagick 입니다. 먼저 포스트에서 ImageMagick 을 프로젝트에 가져오는 방법을 아래와 같이 소개해 드린적이 ��

diy-dev-design.tistory.com

 

2020/01/03 - [DEV/c#] - [C#] C# APP 에서 엑셀 연동해보기

 

[C#] C# APP 에서 엑셀 연동해보기

엑셀에서 VBA 로 코드를 짜다 보면 막상 특정 엑셀 파일에만 VBA 가 적용이 가능하기 때문에 막상 다른 엑셀 파일에서 동일한 동작을 하려면 또 코드를 복사해 넣고 실행을 해야 하는 경우가 있습�

diy-dev-design.tistory.com

 

 

 

 

 

반응형
반응형

사용자의 마우스 컨트롤 없이 자동으로 지정된 위치에서 마우스를 클릭하게 만들어 주는 기능 입니다.

 

먼저 아래와 같이 DLL 을 불러들여 주어야 하겠습니다.

class 정의 바로 아래부분에 넣어 주면 무난하겠네요.

[DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);

[DllImport("user32")]
public static extern int SetCursorPos(int x, int y);

 

DllImport 부분에 빨간 줄이 나온다면 제일 상단에 아래의 같이 지시문을 추가합니다

 

using System.Runtime.InteropServices;
using System.Threading;

<2022/12/28 누락된 코드가 있어 추가하였습니다>

그런 다음 마우스를 이동하는 함수를 만들어야 겠습니다.

 

먼저 상수값을 지정해 주어야 합니다. 마우스의 각 이벤트에 대응되는 상수인데요. 이름은 적당히 적어 주면 됩니다.

역시 Form 상단 클래스 정의 이후에 아래와 같이 정의해주면 되겠습니다.

private const int MouseEV_Move = 0x0001; 		/* mouse move 			*/
private const int MouseEV_LeftDown = 0x0002; 	/* left button down 	*/
private const int MouseEV_LeftUp = 0x0004; 	/* left button up 		*/
private const int MouseEV_RightDown = 0x0008; 	/* right button down 	*/

private int interval_;
private readonly ManualResetEvent stoppeing_event_ = new ManualResetEvent(false); //System.Threading;

<2022/12/28 누락된 코드가 있어 추가하였습니다>

그런 다음 아래에 실제 함수를 작성해 봅니다.

public void MouseSetPosNclick(int x, int y)
{
	try
	{
		SetCursorPos(x, y);
		stoppeing_event_.WaitOne(interval_);
		MouseClick_now();
	}
	catch (Exception e)
	{
		MessageBox.Show("MouseSetPosNclick\r\n" + e.Message);
	}
}

public void MouseClick_now()
{
	try
	{
		mouse_event(MouseEV_LeftDown, 0, 0, 0, 0);
		mouse_event(MouseEV_LeftUp, 0, 0, 0, 0);
		stoppeing_event_.WaitOne(100);
	}
	catch (Exception e)
	{
		MessageBox.Show("MouseClick_now\r\n" + e.Message);
	}
}

 

 

사용하실 때에는 아래와 같이 사용하시면 되겠습니다.

 

MouseSetPosNclick(467, 280); // 원하는 좌표를 입력하면 됩니다.

 

궁금하신 부분은 뎃글로 질문 남겨 주세요~

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

 

 

본 기능을 이용하여 윈도우 잠금 방지 유틸리티를 하나 만들어 보았습니다.

https://diy-dev-design.tistory.com/98

 

재택근무 필수 유틸 "자리안비움" - 윈도우 꺼짐 방지

요즘 코로나 바이러스 때문인지 덕분인지 재택근무를 하는 분들이 많은데요. 막상 집에 있다 보면 사무실에 있을 때 처럼 연속해서 자리에 머무르지 못하는 경우가 종종 있습니다. 애들이나 와이프가 뭐 부탁하면..

diy-dev-design.tistory.com

 

2020/07/21 - [DEV/c#] - C# 문자열 읽어서 문자열에 해당하는 변수에 값 세팅하기

 

C# 문자열 읽어서 문자열에 해당하는 변수에 값 세팅하기

오늘 소개해드릴 꿀팁은요. 문자열을 읽어 들여서 문자열 내에 들어있는 특정 단어를 이용하여 개발 중인 코드의 변수로 인식하여 해당 변수에 값을 세팅하는 방법을 소개해 드릴까 합니다. 예�

diy-dev-design.tistory.com

2023.01.31 - [DEV/c#] - [c#] Resource 에 추가한 텍스트를 소스코드에서 불러오기

 

[c#] Resource 에 추가한 텍스트를 소스코드에서 불러오기

뻔하디 뻔한 개발 노하누는 가라~ 이번에도 쓸만한 내용을 소개해 드릴 까 합니다. 개발을 하다 보면 실제 소스코드 외에도 어떤 텍스트를 resource 에 넣어 두고 소스코드에서 불러와야 하는 경우

diy-dev-design.tistory.com

 

반응형
반응형

 

c# .net 환경 개발시 아래의 함수를 이용하여 Delay 를 구현할 수 있습니다.

 

private static DateTime Delay(int MS)
{
  DateTime ThisMoment = DateTime.Now;
  TimeSpan duration = new TimeSpan(0, 0, 0, 0, MS);
  DateTime AfterWards = ThisMoment.Add(duration);

  while (AfterWards >= ThisMoment)
  {
    System.Windows.Forms.Application.DoEvents();
    ThisMoment = DateTime.Now;
  }

  return DateTime.Now;
}

 

사용할때는 아래와 같이 사용합니다.

 

Delay(1000); // 1초 동안 Delay 를 하게 되죠

 

이상 간단하게 Delay 기능 사용하기 였습니다.

반응형

+ Recent posts