반응형

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

얼마전에 제가 재택근무 필수 유틸로 '자리안비움' 이라는 유틸을 하나 올렸었는데요.

2020/03/09 - [DEV/c#] - 재택근무 필수 유틸 "자리안비움" - 윈도우 꺼짐 방지

 

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

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

diy-dev-design.tistory.com

회사의 보안 문제로 해당 유틸리티가 구동이 되지 않는 분들이 계서서 엑셀로 비슷한 기능을 하는 버전을 하나 만들어 보았습니다.

엑셀 버전 자리안비움 V2

작동 하는 방법은 간단합니다.

타이머 간격 옆부분에 숫자를 입력합니다. 해당 숫자는 마우스가 움직이지 않는 시간을 지정합니다.

그런다음 '시작' 버튼을 누르면 동작 하게 되는데요. 

마우스가 지정한 시간만큼 움직임이 없으면 잠깐 마우스 커서를 이동시키는 기능을 수행합니다.

'중지' 버튼을 누르면 처음 설정한 시간으로 시간이 리셋되고 기능 동작이 멈춥니다.

모니터 절전 방지 기능은 넣지 않았고요. 마우스만 제어가 됩니다. 

모니터 절전 기능까지 동일하게 동작 됩니다.  시작을 누르면 ON 상태가 되며 중지를 누르면 OFF 로 바뀌도 기능이 중단 됩니다.

하드디스크 꺼짐, 최대절전모드 진입 등의 제어는 이루어지지 않으니 컴퓨터가 꺼진다면 확인해 보세요.

 

엑셀 한켠에 해당 파일을 열어두고 '시작' 버튼을 눌러 놓으면 시스템이 자리비움으로 변경되지 않는 것이지요.

반응형

'ㅎㅎ

물론 우리들은 누가 지켜보든 지켜보지 않든 열심히 일을 하지만 피치 못하는 상황으로 자리를 비워야 하는 일이 있을 수도 있지 않겠습니까? 그런데 회사에서는 자리를 지키고 앉아 있는지만 모니터링 하는 한심한 상사도 있게 마련이지요. 

암튼 뭐 좋은 목적으로 사용하시리라 믿습니다.

아래 파일을 다운로드 받으셔서 사용하시면 되며 초기 구동시 엑셀 매크로에 대한 허용 권한을 허용해 주셔야 합니다.

zarianbium_excel.xls
0.05MB

해당 엑셀 파일에 vba 를 이용하여 마우스를 제어하는 코드도 들어있으니 공부하실 분들은 다운로드 받으셔서 살펴보시기 바랍니다 ^^

 

 

20200901 내용 추가

- 유틸 버전 자리안비움과 동일한 모니터 절전 기능을 추가하였습니다.

20230512 내용 추가

- 어플처럼 마우스 클릭 기능을 추가하는 방법을 소개해 드립니다. 직접 하시면 됩니다.

  • 다운로드 받은 엑셀 파일을 열어놓고 alt+F11 키를 눌러줍니다 --> vba 편집창 나타남
  • 중간코드 중에 waitTime 부분을 아래와 같이 수정합니다. Call click 추가

이랬던 코드를
요렇게 3줄 추가하여 수정해 줍니다.

요렇게 하면 마우스가 이동한 뒤에 클릭! 원래 위치로 돌아와서 클릭! 하는 동작이 추가 됩니다.

스카이프 기반 메신저가 자리비움이 안먹는다는 분들이 계신데.. 요렇게 테스트 해보니 자리비움으로 바뀌지 않는 것을 확인했습니다. 

정지 했다가 한번 다시 시작하시면 적용 됩니다.

 

그럼 이만~

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

2020/06/22 - [DEV/VBA] - [vba] 초등학교 연산 자동 문제집 - 곱셈 추가

2020/01/08 - [DEV/c#] - Excel Automate, 엑셀 자동화 프로그램

2020/05/21 - [DEV/VBA] - [Excel] LCD 인치 정보로 가로 세로 길이 알아내는 방법

2019/10/24 - [DEV/VBA] - [vba] 버튼(단추)를 이용하여 스크립트 실행하기

반응형
반응형

안녕하세요 주인장입니다.

코로나로 인한 개학연기로 아이들이 집안에서만 딩굴딩굴 거려 답답하신가요?

아이들에게 신나는 연산 문제를 내 주는건 어떨까요?

 

??

 

는 아니고 VBA 로 제가 그동안 덧셈, 뺄셈을 자동으로 만드는 방법을 소개해 드렸었는데요, 이번에는 두자릿수 곱셈문제를 추가해 보았습니다. 

아이들의 계산 공간을 위하여 기존의 가로 문제가 아닌 세로 연산 레이아웃이 필요했고요.

문제수를 조금 줄여 보았습니다.

문제는 난이도를 조금 조정할 수 있는 데 계산에 사용되는 최대 숫자의 크기 제한을 서서히 높이는 방식으로 구성하였으므로 엑셀 VBA 를 조금 이해하시는 분이라면 직접 수정하여 사용하시는 것도 가능합니다.

 

그냥 간단히 설명 드리자면 문제의 난이도를 수정하려면 아래의 순서로 하시면 됩니다.

버튼 --> 마우스 우클릭 --> 매크로 지정 --> 매크로창에서 선택되어 있는 매크로 편집 --> 최대값 변경

 

선우수학숙제..xls
0.08MB

 

 

그리고...

 

채첨해보시면서 일일이 계산하는 것도 번거로운 일인듯 하여 정답보기 버튼을 추가로 넣었습니다.

문제를 출제 --> 프린트 --> 정답보기 --> 채점 또는 프린트 하여 채점 하는 식으로 사용하시면 됩니다.

다시 문제를 내버리면 이전에 만들어진 문제는 사라지므로 그렇게 된 경우엔 채첨하실때 직접 계산을 하시는 수 밖에 없답니다.

 

아들내미가 이걸로 며칠 하더니 연산 실력이 부쩍 올랐습니다. 늘 하던 실수도 많이 줄더군요.

그리고는 하는말이 우리 선생님한테 이런게 들어가지 않았으면 좋겠다고 하더라고요. ㅋㅋ. 매일 쪽지시험보면 어쩌냐고요.. 

 

 

선생님들. 어머님들 너무 심하게 시키지는 말아주세요~

 

본 포스트에 첨부된 엑셀 파일로 덧셈, 곱셈, 뺄셈을 모두 출재하실 수 있으니 기존의 포스트는 참고만 하시면 될 것 같습니다. 

 

그럼 더운 여름 코로나로 답답한 아이들에게 시원한 연산문제를 선물해줘보세요~

2019/09/10 - [DEV/VBA] - [VBA] 엑셀로 초등학교 저학년 문제집 만들기 (자동버전)

 

[VBA] 엑셀로 초등학교 저학년 문제집 만들기 (자동버전)

이번 포스트를 통해 꼬마아이들의 공공의적 이 될런지도 모릅니다. 바로 초등 저학년 연산문제를 끝도 없이 만들수 있는 파일을 준비했기 때문입니다. 지난번 포스트에서 연산문제를 만드는 VBA

diy-dev-design.tistory.com

 

2020/04/17 - [DEV/VBA] - [vba] 초등학교 연산 문제 자동 출제, 이번엔 뺄셈에 도전

 

[vba] 초등학교 연산 문제 자동 출제, 이번엔 뺄셈에 도전

VBA를 이용하여 초등학교 연산 문제를 내는 것을 만들어 올린적이 있었습니다. 개학이 늦어지면서 집안에서 아이들 공부시키랴 밥해먹이랴 엄마들이 고생이 많을텐데요. 그사이 아이들의 학습 �

diy-dev-design.tistory.com

 

스크립트의 원리가 궁금하시다면 아래 포스트를 참고해주세요.

2019/09/03 - [DEV/VBA] - [VBA] 초등학교 저학년 수학 연산 문제 자동으로 만들기

 

[VBA] 초등학교 저학년 수학 연산 문제 자동으로 만들기

안녕하세요. 이번 강좌에서는 VBA 를 이용하여 초등학교 저학년 아이를 위한 연산문제를 자동으로 내주는 스크립트를 작성해 보겠습니다. VBA 를 좀 해봤다 하면서 막상 일상 생활에 사용하려면 �

diy-dev-design.tistory.com

 

이참에 본격적으로 VBA 도 한번 배워 보고 싶으시다면? 

2019/06/01 - [DEV/VBA] - 엑셀 VBA 시작하기

 

엑셀 VBA 시작하기

마이크로 소프트 엑셀은 수많은 기능과 자동화된 연산 처리, 편리한 템플릿 가공, 다양한 그래프 드을 이용한 데이터의 시각화 외에도 아주 많은 유용한 기능을 제공하여 사무 업무의 표준 프로

diy-dev-design.tistory.com

 

반응형
반응형

가끔 모니터 가로세로 크기가 궁금할 때가 있습니다. 휴대폰 구입 전 화면 크기를 정확히 알고 싶은 경우도 있지요.

그런데 이상하게 화면의 가로세로 크기에 대하여 mm 로 설명이 나오지 않는 경우가 많죠. 책상과 모니터를 새로 사기 위하여 크기가 궁금하다면 그런데 어디에도 정보가 없다면 모니터를 구입하여 자로 재는 수밖에 없습니다. -_-;;

 

픽셀 피치라던가 DPI, 몇인치 인지, 가로세로 최대 해상도 뭐 이런 정보들은 많은데요 막상 실제 모니터 LCD 의 가로, 세로의 길이를 mm 나 cm 로 알려주는 곳은 많지 않죠.

이런 분들을 위해 엑셀로 간단하게 계산 하는 수식을 하나 올려드리겠습니다. 

아래와 같이 셀의 정보를 설정합니다.

B4 : 인치 수 입력 (ex. 21)
E4 : 가로 해상도 입력 (1920)
F4 : 세로 해상도 입력 (1080)

가로크기 mm (아래 수식을 원하는 가로 길이 셀에 넣으세요)
= 25.4*(B4*E4)/SQRT((E4*E4)+(F4*F4))

세로크기 mm (아래 수식을 원하는 세로 길이 셀에 넣으세요)
= 25.4*(B4*F4)/SQRT((E4*E4)+(F4*F4))

저는 C4, D4 셀에 구하고자 하는 위치를 정한뒤 위의 수식을 넣었습니다.

1920 1080 해상도의 24 인치 모니터의 LCD 크기는 아래와 같습니다. 

회색칸으로 표시된 곳에 크기가 잘 나왔죠? 

흰색 칸에 위에 말씀드린 정보만 입력하면 가로 세로 크기를 정확하게 보여줍니다.

VBA 가 아닌 엑셀 함수이므로 값을 입력하는 즉시 크기를 알 수 있습니다.

휴대폰의 액정크기를 확인하는데 사용하셔도 됩니다.

해상도와 인치수만 안다면 어떤 LCD에도 다 적용되니 커스텀 LCD 모니터 제작이나 뭐 다른 궁금한 곳에 사용해도 다 됩니다.

 

유용하게 사용하시기 바랍니다~ ^^

 

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

 

2020/04/03 - [DIY] - LEGO 블럭을 이용한 전자담배 기기 직접 제작하기

 

LEGO 블럭을 이용한 전자담배 기기 직접 제작하기

전자담배를 피는 입장에서 늘 불안한건 사용중인 전자담배를 어딘가에 놓고 오거나 고장나는 등의 이유로 대체할 기계가 없는 순간이 왔을 때 인것 같습니다. 전자담배는 연초 담배를 대신할 ��

diy-dev-design.tistory.com

2020/05/17 - [DIY] - [재활용] 고장난 LED 바 수리하기 > 화장대 조명 만들기

 

[재활용] 고장난 LED 바 수리하기 > 화장대 조명 만들기

저의 보물창고 바로 폐 배터리, 형광등 수거함 입니다. 지나는 길에 기웃거려 보니 LED 바가 버려진게 있더군요. LED 바 금액 자체가 비싼건 아니지만 사실 일부러 돈주고 살만큼 효과적인 조명기�

diy-dev-design.tistory.com

2020/01/08 - [DEV/c#] - Excel Automate, 엑셀 자동화 프로그램

 

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

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

diy-dev-design.tistory.com

 

반응형
반응형

보통 인터넷에 VB .net 을 이용하여 엑셀 연동 관련하여 검색을 해보면 createObject 를 이용하여 개체를 생성하고 연결하는 과정이 소개가 되어 있는데 이런 경우 연동된 엑셀은 백그라운드로 실행되며 지정한 명령들을 수행한 뒤 종료되거나 메모리 해제가 되지 않는경우 종료 조차 되지 않습니다. 개발을 위하여 또는 실제 사용중에도 몇차례 실행하거나 기능 동작 중 작업관리자를 열어 보면 엄청나게 많은 엑셀 인스턴스가 있는 경우도 있지요.

사실 제가 필요한 것은 현재 열려있는 엑셀 실행 프로그램을 연동하는 방법이 필요했는데 하루 정도를 투입하여 이것저것 해보았으나 결국 실패 하였고 해외 검색을 통하여 방법을 알게되어 포스팅을 하게 되었습니다. (나중의 나를 위해서)

 

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

 

 

Imports Microsoft.Office.Interop.Excel '코드 최상단'

' 현재 실행중인 function 내'
Dim oExcel As Application ' 엑셀파일 App 억세스 오브젝트 '
oExcel = TryCast(Marshal.GetActiveObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)

 

요렇게 하면 현재 실행중인 Excel application 을 가져오는 것이 가능합니다.

 

다시 말하자면 현재 특정 엑셀 파일을 열어놓은 상태에서 위의 코드를 실행하면 바로 열려있는 해당 엑셀 파일과 연결이 되는 것입니다.

 

Imports Microsoft.Office.Interop.Excel '코드 최상단'

' 현재 실행중인 function 내'
Dim oExcel As Application ' 엑셀파일 App 억세스 오브젝트 '
Dim oBook As WorkBook
Dim oSheet As WorkSheet

oExcel = TryCast(Marshal.GetActiveObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)
oBook = oExcel.ActiveWorkBook '현재 열려 있는 엑셀 파일 중 선택되어 있는 문서'
'oSheet = oBook.ActiveWorkSheet '' 제가 코드를 잘못 썼네요. 죄송합니다.'
oSheet = oBook.ActiveSheet ' 현재 열려 있는 시트 (마지막으로 보았던 시트)'
oSheet.Cells[1,1].Interior.Color

 

이런식으로 사용하는 것이죠.

여기서 oSheet 를 ActiveWorkSheet 로 설정하였는데요. 특정 시트의 이름을 지정하려면 

oSheet = oBook.WorkSheets["Sheet1"]

 

과 같이 특정하여 지정하는 방법도 가능합니다.

여러개의 시트 사이에서 어떤 작업을 하려면 위와 같이 해주면 됩니다.

궁금하신 부분은 뎃글로 문의 해주시면 답변해보도록 하겠습니다.

 

*** 내용 추가 합니다. 2021-03-14

일단 프로젝트 시작할 때 정확하게 .net Framework , Visual Basic, Window Form 형식으로 프로젝트를 세팅하셨는지 확인을 하셔야 합니다. 위의 세팅이 맞지 않으면 정상적으로 동작하지 않을 수 있습니다.

그리고 엑셀 코드를 사용하기 위하여는 참조를 추가시켜 주어야 합니다.

우측의 솔루션 탐색기에서 참조 --> 참조추가 --> COM 순으로 들어가신 후

Microsoft Excel 00.0 Object Library (00.0 는 본인 컴퓨터에 깔려있는 엑셀 버전입니다)

를 체크하고 추가시켜 주어야 합니다. (찾기 어려우시면 저처럼 우상단 검색창에 excel 검색 ㄱㄱ)

엑셀 COM 오브젝트를 추가해 주어야 한다

이렇게 하시면  Excel 에서 사용하던 vba 를 대부분 사용하실 수 있습니다.

 

잘 안되시는 분을 위하여 간단하게 테스트용 소스코드를 올려 드립니다.

버튼을 누르면 현재 실행중인 엑셀 파일명, 시트명이 표시된다.
excel_connect_test.zip
0.06MB

 

감사합니다.

 

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

 

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

 

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

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

diy-dev-design.tistory.com

 

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

 

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

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

diy-dev-design.tistory.com

 

 

반응형
반응형

정말 지긋지긋한 마이크로 소프트 입니다. 저는 VBA 를 하면서 이번 포스트 내용만큼 어의가 없는 경우는 없었던거 같습니다. 왜 때문이냐고요? 바로 아주 단순한 셀 넓이를 VBA 를 이용하여 지정하는 방법 때문입니다.

자 제가 왜 이런 반응을 보이는가 하면요.

엑셀 VBA 에서 셀의 넓이 즉 range.columnWidth 를 지정할때 정말 독특한 단위와 방법을 사용하기 때문입니다.

일단 셀의 넓이는 다음의 두가지 방법으로 구할 수 있습니다. 그런데 그 두가지가 반환하는 값의 정체를 보면 정말 당황스럽기 짝이 없죠.

Range.Width [읽기]
 : 셀의 넓이를 point 로 반환한다. 

Range.ColumnWidth [읽기/쓰기]
 : (나름데로 해석한 결과)셀의 넓이를 현재 지정된 폰트의 "Normal" 인 상태를 기준으로 하는 글자 하나의 크기를 1로 하고 마진값을 추가한 값을 설정 또는 반환한다.

 

 

????????????

 

 

저게 뭔가요.. 

물론 글자가 짤리 않도록 셀의 폭을 지정하는 기능 아주 좋습니다. 글자수만 알면 되는거죠. 훌륭합니다. 네.

그런데 왜 Width 는 읽기 만 가능하며 point 나 pixel 같은 값으로는 설정이 안되는 것인가요? 저와 같은 그래픽 디자이너는 이미지를 붙이든 뭘해도 pixel 을 기준으로 값을 정의하는게 일상인데요. 뜬금없이 왠 글자의 크기를 이용하여 margin 까지 덧붙여 크기가 지정되는 걸까요? 게다가 현재 지정된 폰트의 Normal 상태 일때 라니... 만약 글자 크기가 달라지거나 스타일이 달라지면 같은 값을 지정해도 폭이 달라질 수 있다는 이야기가 됩니다.

 

해외 사이트들을 구글링 해보았으나 마땅한 답이 없더군요. 

그래서 그냥 코드를 짜 보았습니다.

VBA function : Pixel to ColumnWidth

Sub setColumnWidth(ByVal mRng As Range, ByVal targetWidth_pixel As Integer)

    'point = pixel * 0.75'
    'pixel = point / 0.75'
    'columnWidth = char Width + margin(fixed)'
    
    Dim cWidth_A As Double
    Dim cWidth_B As Double
    Dim cWidth_margin As Double
    Dim columnWidthRatio As Double
    Dim testColumnWidth As Double
    
    Dim cWidth As Double
    
    testColumnWidth = 10
    
    
    ' 가로 크기 지정시 발생되는 margin 을 알아보기 위하여 1배, 2배 크기일때 유지되는 margin 을 구해보자'
    mRng.ColumnWidth = testColumnWidth
    cWidth_A = mRng.Width   '(point)'
    
    mRng.ColumnWidth = testColumnWidth * 2
    cWidth_B = mRng.Width   '(point)'
    
    ' 항상 고정으로 유지되는 margin 크기 확인 (point)'
    cWidth_margin = cWidth_B - ((cWidth_B - cWidth_A) * 2)
        
    'point 값이 columnWidth 로 변환되기 위한 ratio 를 구한다. 이때 전체 넓이에서 위에서 구한 margin 을 생략하고 계산한다. '
    'columnWidthRatio : point --> columnWidth'
    columnWidthRatio = mRng.ColumnWidth / (cWidth_B - cWidth_margin)
    
    '최종 크기 지정'
    mRng.ColumnWidth = (targetWidth_pixel - (cWidth_margin / 0.75)) * 0.75 * columnWidthRatio
        
        
End Sub

 

약간 복잡해 보이지만 함수 형태로 만들어 놓았으므로 코드를 가져다가 그냥 사용하시면 됩니다. 인자로 크기를 조정해야 하는 셀과 pixel 기준의 크기를 입력해 주시면 되고요. 아래와 같이 사용하시면 됩니다.

Sub test()
    Dim rngA As Range    
    Set rngA = [d3]
    
    setColumnWidth rngA, 256
End Sub

 

이렇게 하면 D3 에 해당하는 column 의 폭이 256 pixel 로 설정이 됩니다.

 

코드를 좀 보시는 분은 금방 아시겠지만 원리는 다음과 같습니다.

columnWidth 는 고정된 단위가 아니므로 point 라는 단위를 이용하여 columnWidth 로 환산하기 위한 ratio 를 구해야 합니다. columnWidth / Width 하면 되는거죠. 그런데 여기에 함정이 있습니다. 

columnWidth 라는 값이 반환하는 값이 글자의 폭 + margin 이기 때문에 위와 같이 단순 계산을 하면 정확한 값으로 설정을 할 수가 없습니다. margin 만큼씩 계속 오차가 있는 것이지요. 그래서 margin 을 구하는 과정이 선행되었던 것입니다.

제가 몇번 테스트 해본 결과 글자을 속성을 중간에 바꾸지 않는다면 margin 의 값은 항상 일정한 것을 확인하였기 때문에 columnWidth 를 10 , 20 으로 두배 차이나게 각각 적용했을때의 Width 를 이용하여 변하지 않는 크기를 찾아내 해당 크기를 margin 으로 지정하였습니다.

결과적으로는 현재 구해진 Width(point) - margin(point) 로 ColumnWidth 를 나누어 주게 되면 point 값을 columnWidth로 환산 하기 위한 비율이 구해지게 되는 것이죠.

끝으로 입력된 픽셀에서 margin 에 해당되는 픽셀 크기를 빼 준뒤 point 로 전환한 다음 위에서 구한 비율을 곱해주게 되면 정확하게 pixel 에 대응되는 columnWidth 를 구할 수 있게 됩니다.

 

정말 저는 미국인들이 inch 를 사용하는 이유도 모르겠고 microSoft 사에서 위와 같이 독특한 단위만 입력하도록 개발해놓은 이유도 알 수가 없습니다. 

이번 기회로 저역시 좋은 공부가 되었기에 포스트로 남깁니다.

도움이 되셨거나 본 포스트가 괜찮으셨으면 공감 부탁드립니다~

 

2020/01/30 - [분류 전체보기] - [vba] 셀 속성 조정하기 (넓이, 높이, 숨기기, 테두리 등)

 

[vba] 셀 속성 조정하기 (넓이, 높이, 숨기기, 테두리 등)

이번 포스트에서는 vba 를 이용하여 셀의 속성을 조정하는 방법을 설명 드리겠습니다. 엑셀은 단순한 표의 형식을 취하고 있지만 셀의 간격이나 테두리 등의 속성을 자유롭게 조정할 수 있어 다양한 서식에 사용하..

diy-dev-design.tistory.com

2019/09/20 - [DEV/VBA] - [VBA] 엑셀에 그림 자동으로 넣기

 

[VBA] 엑셀에 그림 자동으로 넣기

안녕하세요. 이번 강좌에서는 엑셀 시트에 있는 이미지 파일 경로를 이용하여 셀에 이미지를 붙여넣는 스크립트를 한번 알아 보겠습니다. 엑셀에 이미지를 몇장 붙여 넣는 거야 그림 삽입하기로 손쉽게 넣으면 되..

diy-dev-design.tistory.com

2019/08/30 - [DEV/VBA] - [VBA]RGB 색상 값이 들어있는 셀에 셀 색상 지정하기

 

[VBA]RGB 색상 값이 들어있는 셀에 셀 색상 지정하기

이번 강좌에서는 셀에 입력되어 있는 컬러 값을 이용하여 셀의 색상을 지정하는 방법을 알아보도록 하겠습니다. 디자이너 분들이라면 언제가 한번쯤은 엑셀 시트에 자신이 정의한 컬러 값을 정리해서 보내야 하는..

diy-dev-design.tistory.com

2022.12.02 - [DEV/VBA] - [excel vba] 16진수를 10진수로, 10진수를 16진수로 변경

 

[excel vba] 16진수를 10진수로, 10진수를 16진수로 변경

오늘은 간단한 VBA 코드를 하나 소개해 드릴까 합니다. 프로그래밍을 하다보면 16진수를 10진수로 바꾸거나 10진수를 16진수로 바꾸어야 하는 경우가 종종 있습니다. 읭? 16 진수? 라고 하실수도 있

diy-dev-design.tistory.com

 

 

반응형
반응형

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

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

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

 

어쨌든 오늘은 본격적으로 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

 

반응형

+ Recent posts