반응형

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

간단한 덧셈, 뺄셈은 굳이 돈을 들여 학습지를 하실 필요가 없습니다. 또 초등학교 선생님들께서도 다운로드 받아 놓으시면 손쉽게 문제를 낼 수 있으니 아이들 간단한 쪽지 시험을 내야 하는 경우 사용하시기에도 안성 맞춤일 것 같습니다.

제가 만든 엑셀 파일만 있으면 수천장도 만드는게 가능하니까요. 아이들을 위하여는 적당히 시키는게 좋겠지만 또 막상 연산에 재미 붙일 시기에 문제를 만드느라 고생하실 필요가 없다는 것이지요. 아이들아 미안하다... 

 

아래 링크된 파일을 받으시면 빼기 기초 시트에 문제가 들어 있습니다.

 

선우수학숙제.xls
0.07MB

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 

 

 

 

 

파일을 다운로드 받으신 후 열어 보시면 아래와 같이 뻴셈 문제가 나와 있는 시트가 있습니다.

하단의 텝을 보면 기존의 더하기 문제도 보인다.

 

문제를 새로 내실 때에는 우측의 버튼을 이용하여 문제를 새로 내실 수가 있습니다. 유치원 수준의 아주 쉬운 문제도 가능합니다.

우측의 버튼을 차례로 눌러보시면 각각 난이도 별로 문제가 나오는 것을 확인하실 수 있으실 텐데요. (쉬움) 은 뺄셈 과정에서 앞자리수가 바뀌지 않는 뺄셈이라고 보시면 됩니다. 

예를 들면 18 - 5 처럼 실제로는 뒷자리만 연산이 일어나죠.

만약 문제내기가 동작이 되지 않는다면 보안 수준을 낮추어 주면 됩니다. 

메뉴의 "파일" --> "옵션" --> "보안센터" 로 들어 갑니다.

보안센터 버튼

 

들어가셔서 매크로 설정의 보안 수준을 낮추어 주어야 하는데요. 직업상 외부 엑셀 파일을 늘 다운로드 받아야 하는 경우라면 문제내기를 마치면 원상복구를 해놓는 것이 좋습니다. 엑셀 VBA 는 매우 강력한 언어로 시스템의 많은 것들을 제어할 수 있는 언어 입니다. 주의 하는것이 좋겠죠.

모든 매크로 포함으로 변경

 

이렇게 하시면 제가 만들어 드린 문제 내기 기능이 동작할 것입니다.

 

현재 화면 영역은 A4 용지에 딱 맞게 만들어져 있기 때문에 바로 프린트 하시면 됩니다.

 

 

 

 

아이들이 문제 푸는것을 좋아할리는 만무하겠지만 그렇다고 온종일 집에서 휴대폰만 만지작 거리게 할수도 없지 않을까요? 간단한 연산 문제로 두뇌도 좀 풀어주고 무엇인가 계속해서 해나가고 있다는 성취감도 주면 좋을 것 같습니다.

이제 온라인 개학이 학교마다 진행되고 있습니다만 아이도, 부모님도, 선생님들도 모두 힘든 시기가 아닐까 생각됩니다. 

모든 분들께서 조금이나마 힘을 내시라고 이런 것이라도 올려 봅니다. 

(물론 아이들은 힘빠지는 포스트이려나요 ㅎㅎ)

 

아 그리고 제가 시트보호는 걸어 두었지만 비주얼 베이직 코드는 모두 보실수 있답니다. Alt + F11 키를 누르시면 제가 만든 엑셀의 계산 과정이 코드로 나와 있습니다. 코드에 관심이 있으신 분은 참고하시면 좋을 것 같습니다.

덧셈 문제는 각각의 문제마다 코드가 작성이 되어 있고요. 뺄셈은 하나의 함수로 모든 문제내기에 대응이 가능한 방식 힙니다. 뺄셈에 적용된 코딩 방식이 좀더 효율적인 코드라고 할 수 있겠습니다. 관심이 있으셨던 분이라면 한번 열어서 보시길 바랍니다. 

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 

 

비주얼 베이직으로 연산 문제를 내는 방법은 아래 글을 참고해 주세요

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

 

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

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

diy-dev-design.tistory.com

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

 

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

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

diy-dev-design.tistory.com

 

 

 

 

곱셈까지 추가된 버전으로 한번에 사용하시려면?

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

 

[vba] 초등학교 연산 자동 문제집 - 곱셈 추가

안녕하세요 주인장입니다. 코로나로 인한 개학연기로 아이들이 집안에서만 딩굴딩굴 거려 답답하신가요? 아이들에게 신나는 연산 문제를 내 주는건 어떨까요? ?? 는 아니고 VBA 로 제가 그동안 ��

diy-dev-design.tistory.com

 

 

반응형
반응형

오늘은 엑셀 시트에 있는 모든 그림을 한번에 삭제하는 스크립트를 만들어 보겠습니다. 엑셀 시트에 첨부된 그림을 일일이 또는 어떤 조건에 맞는 모든 그림을 삭제 하는 것은 매우 귀찮은 일입니다. 일단 다중 선택을 위하여 하나하나 그림 개체를 선택해 주어야 하는데 대상을 잘못 클릭하거나 그 대상이 수백개 이상일 때는 정말 난처한 상황이 발생되죠.

그래서 이번에는 엑셀 시트에 있는 모든 그림을 삭제하는 방법 또는 특정 영역에 있는 모든 그림을 삭제하는 방법을 포스팅 하려고 합니다.

 

스크립트 내용은 아주 짧으니 참고하시면 됩니다.

 

Sub delPic() '영역안의 사진 지우기

    Dim cwkbook As Workbook
    Dim cwkSht As Worksheet
    
    Dim shpC As Shape
    Dim rngShp As Range
    Dim rngAll As Range
    Dim rngStartValue As String
    Dim rngEndValue As String
    
    Set cwkbook = ActiveWorkbook
    Set cwkSht = cwkbook.ActiveSheet
    
    rngStartValue = "A1"
    rngEndValue = "z9999"
    
    Set rngAll = cwkSht.Range(rngStartValue, rngEndValue)
    
    For Each shpC In cwkSht.Shapes
        Set rngShp = shpC.TopLeftCell
        If Not Intersect(rngAll, rngShp) Is Nothing Then
            shpC.Delete
        End If
    Next shpC
    
    Set rngAll = Nothing
    Set rngShp = Nothing
    
End Sub

 

스크립트 상단에 각종 변수를 정의해 주게 되는데요. 워크북 (엑셀 파일) 과 워크시트 (시트) 를 지정해주는 부분이 있습니다. 이곳에서는 일단 현재 활성화된 파일의 활성화된 워크시트를 선택해 주었습니다. 만약 특정 엑셀 파일을 지정할 계획이고 해당 엑셀 파일에 특정 시트에 대해 작업을 해주어야 한다면 해당 부분만 아래와 같이 작성해주면 됩니다.

Set cwkbook = Excel.Workbooks("엑셀파일이름.xlsx")
Set cwkSht = cwkbook.Worksheets("해당워크시트이름")

그 아래에 rngStartValue 와 rngEndValue 를 이용하여 영역의 시작부분과 끝부분의 셀 이름을 정해주면 해당 셀안에 있는 모든 그림은 삭제가 됩니다. 

만약 세로로 같은 열에 있는 그림만 삭제를 해야 한다면 시작칸과 종료칸의 열 번호를 동일하게 지정해 주면 됩니다.

 

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

 

 

 

그림 한번에 삭제하기, 자동으로 붙여넣는 프로그램은 아래 포스트를 참고하세요.

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

 

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

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

diy-dev-design.tistory.com

 

현재 시트에서 사용자가 선택한 영역을 가져오는 것은 아래 포스트를 참고하시면 됩니다.

https://diy-dev-design.tistory.com/23?category=791049

 

[vba] 현재 엑셀 시트의 선택한 영역을 vba 스크립트에서 가져오기

vba를 이용하여 자동화를 하기 위하여는 어떤 범위에 있는 대상에 대하여 작업이 이루어 지는지를 설정 해주어야 합니다. 보통 range 라는 개체를 이용하여 설정을 해주게 되는데 이 range 를 현재 엑셀 시트에서..

diy-dev-design.tistory.com

 

특정 영역을 지정하여 스크립트를 동작시키는 것은 아래 포스트를 참고 바랍니다.

https://diy-dev-design.tistory.com/20?category=791049

 

[vba] 자동화를 위하여 엑셀의 영역 설정하는 방법

엑셀을 사용하는 목적 자체가 근본적으로 문서를 만들기 위함은 아니다 보니 세로 또는 가로로 굉장히 길게 데이터가 나열되어 있는 경우가 많습니다. 우리는 vba 를 이용하여 자동화를 할 것이기 때문에 어디부..

diy-dev-design.tistory.com

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

 

[vba] 버튼(단추)를 이용하여 스크립트 실행하기

어떤 엑셀 페이지에 늘 사용하는 스크립트를 작성하였으나 매번 실행하기 위하여 vba 창을 눌러 F5를 누르는 것은 사실 본인이 직접 스크립트 코드를 개발하는 입장이라면 조금도 번거로울 것이 없는 것이지만 누..

diy-dev-design.tistory.com

 

이상으로 엑셀 시트에 있는 모든 그림을 삭제하는 스크립트 소개를 마치겠습니다.

 

도움이 되셨다면 공감 부탁드립니다.

그럼 이만~

반응형
반응형

마이크로 소프트 엑셀은 수많은 기능과 자동화된 연산 처리, 편리한 템플릿 가공, 다양한 그래프 드을 이용한 데이터의 시각화 외에도 아주 많은 유용한 기능을 제공하여 사무 업무의 표준 프로그램이 되었다. 나는 디자이너이지만 후배들에게 포토샵이나 일러스트만큼이나 중요한 프로그램이라고 자신있게 말할 수 있는 것이 바로 엑셀이다. 회사에서 작성되고 확인되는 거의 모든 수치를 다루는 문서는 바로 엑셀이기 때문이다. 

견적서도, WBS 같은 일정표도, 데이터 분석 결과도 모두 엑셀이며 지금은 전자문서로 대체되긴 했지만 각종 결재 서식이나 양식역시 워드보다 엑셀을 많이 사용했었다.

본 포스트를 보신 후
도움이 되었다 생각되시면 공감 클릭!!  부탁드려요~

 

 

엑셀 전문가 하면 다양한 기능을 사용하는 것도 있지만 무엇보다 엑셀에서 지원하는 강력한 기능인 함수의 사용 여부로 판가름 할 수 있겠다. 엑셀에서 각종 지원 함수를 이용하면 엑셀이 더이상 문서가 아닌 하나의 프로그램이 되기 때문이다. 엑셀 지원 함수를 이용한 기능은 너무나도 다양하기 때문에 여기서 다루지는 않을 것이고 따로 찾아보는 것이 좋을 것이다. 관심이 있다면 학원을 잠시 다니는 것도 추천한다.

 

그럼 여기서 이야기 할 주제는 무엇인가 하니, 바로 VBA 라고 하는 프로그래밍 언어에 대하여 작성할 예정이다.

 

VBA 란 Visual Basic for Application 의 약어로 마이크로 소프트에서 제공하는 office 제품군에서 사용할 수 있는 visual basic 언어를 말한다. 

 

visual basic 은 하나의 프로그래밍 언어로 문법이 다른 언어와 약간 차이가 있지만 막상 배우려고 보면 아주 쉽게 습득할 수 있는 언어이며 인터넷에 아주 많은 레퍼런스가 널려 있어 새로 개발을 할때에도 참고할 만한 자료가 아주 많은 괜찮은 개발 언어이다.

 

이 포스트를 보는 분이 이런 글 보자고 들어온 것은 아닐 것 이므로 바로 본론으로 들어가자.

 

엑셀( 다른 office 제품군 포함)에서 VBA 를 작성하기 위하여 먼저 개발창을 열어야 한다.

 

alt + F11 키를 누르면 아래와 같은 창이 나타난다.

 

F11 키를 눌러 VBA 에디터 창이 표시된 화면 - 현재 좌측 tree 의 sheet1을 더블클릭한 상태

좌측 상단에는 현재 엑셀에 열려있는 문서와 각 문서가 포함하고 있는 워크시트 (엑셀 창 하단에 보이는 탭) 이름이 보여지는 창이 하나 있고 아래는 복잡한 테이블... 별로 알필요 없음. 우측은 회색 공간이 있다. 회색 공간에 창이 하나 떠 있는데 이는 필자가 좌측 트리뷰에서 Sheet1(Sheet1) 로 표시된 부분을 더블클릭한 상태이다.

 

이 하얀색 텍스트 에디터에 VBA 를 작성하여 각종 자동화 작업을 할 수 있다.

 

VBA 에서는 어떤 목적을 위하여 수행하는 기능을 묶어서 실행을 시키게 되는데 바로 아래와 같은 형태로 정의한다.

 

 

Sub setText() 

    수행할 명령어

End Sub 

 

여기서 setText 는 사용자가 원하는 기능의 명칭을 적으면 되며 실제 수행하는 기능은 "수행할 명령어" 부분에 입력하면 된다.

 

Sub setText()

    Cells(1, 1).Value = "DIY"
    Cells(2, 1).Value = "Dev."
    Cells(3, 1).Value = "Design"
    
End Sub

 

요렇게 입력하고 F5 키를 누르면 엑셀 창의 Sheet1 에 아래와 같이 자동으로 작성이 된다.

위의 코드가 의미하는 것을 살펴보면

Cells 는 엑셀 화면의 칸들을 의미한다. Cells( rowIndex, columnIndex) 의 순서로 셀을 지정하게 되는데 rowIndex 는 번호 즉 좌측에 세로로 보이는 숫자를 말하고 columnIndex 는 을 의미하며 위에 보이는 알파벳에 해당되는 번호다. 물론 VBA 에서는 알파벳으로 기재를 하지 않고 숫자로 기재를 해야 한다. VBA 에서 가로 세로 열을 앞에 말한바와 같이 지칭할때는 항상 앞자리가 행, 뒷자리가 열 임을 기억하자.

 

참고로 코드 실행을 위하여 F5 를 누를 때 키보드의 커서가 Sub 와 End Sub 사이에 이어야 해당 기능이 실행이 된다.

 

엑셀 VBA 를 공부하면서 알아가야 할 것이 많겠지만 우선 다음과 같은 것들을 고민해보아야 한다.

  • 무엇을 위해 VBA 를 사용할 것인가?
  • VBA 를 배우면 내가 하는 실무 (또는 생활) 에 당장 도움이 되는 것은 어떤 것일까?
  • 엑셀을 이용하면서 가장 시간 낭비라고 생각했던 것은 무엇이었는가?

 

막연히 공부해야 겠다는 생각으로 시작한 스크립팅 공부는 생각보다 진도가 빠르게 나가지 않는다. 당장 1분이라도 내 시간을 아껴 줄 수 있는 부분을 빨리 찾아 직접 만들어 보는 것이 가장 빠른 학습방법이 된다. 아래 몇가지 예를 들어 볼테니 본인에게 해당되는 사항이 있다면 엑셀을 열고 Alt + F11 을 눌러 바로 코드를 작성해 보자.

 

위에 예시를 든 케이스 외에도 VBA 로 할 수 있는 작업은 무궁무진하다. 하지만 어려운 것부터 시작한다면 첫걸음을 떼기 어려우니 간단한 작업부터 도전해 보자. 

 

VBA 관련 첫번째 포스트는 여기서 마무리를 할텐데 이 주제에서 다룰 내용은 아래와 같다.

 

1. 각종 VBA 명령어와 사용법

2. 알아두면 유용한 코드들

3. 완성된 코드 샘플

 

필자는 디자이너지만 프로그래밍을 접하면서 업무의 질이 많이 달라졌다. 개발직군이 아니라고 개발을 등한시 하지 말고 적극적인 자세로 접하도록 해보자. 어느 순간 개발자가 와서 이것 좀 해줄 수 있을까 하고 개발 의뢰를 할 것이다. 그럴때가 우리에게 채무자가 아닌 채권자의 입장이 될 수 있는 절호의 찬스일 것이다. 

 

세상에 VBA 만큼 쉬운 프로그래밍이 없으니 걱정말고 시작하자. 개발자 아닌 디자이너, 기획자, 일반 사무직 분들.

내가 작성하는 내용만 다 따라와도 엑셀 붙잡고 머리 터지게 숫자 계산하는 업무시간이 1/10 으로 줄어들 것이다.

 

 

궁금한 내용이나 질문은 뎃글을 남겨주면 답변해 드리겠습니다.

 

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

 

반응형

+ Recent posts