'VBA' 태그의 글 목록
본문 바로가기

VBA34

VBA 오류 처리 방법 및 디버깅(효율적인 오류처리와 오류제외) VBA로 프로그래밍을 하다보면 코드가 원하는 대로 작동하지 않을 때가 있습니다. 이럴 때 효과적인 디버깅과 오류 처리 기술을 사용하여 문제를 해결할 수 있습니다. 이번 포스트에서는 VBA 디버깅과 오류 처리에 대해 알아보겠습니다. 1. 디버깅 도구 활용하기 VBA는 내장된 디버깅 도구를 제공합니다. 주요 디버깅 기능 중 하나는 "중단점 설정"입니다. 코드의 특정 부분에 중단점을 설정하여 해당 부분에서 코드 실행을 일시 중지시킬 수 있습니다. 이를 통해 코드가 어떻게 동작하는지 실시간으로 확인할 수 있습니다. Sub ExampleDebugging() Dim x As Integer x = 10 ' 중단점 설정 Debug.Print "현재 x의 값은: " & x ' 중단점을 여기에 설정합니다. x = x * .. 2024. 2. 15.
엑셀 VBA(매크로) - 셀 안의 공백 제거, 셀 내의 모든 공백 제거 셀 안에 공백이 있을경우 데이터가 다르게 인식되어 Vlookup이나 sumif 등이 제대로 작동되지 않을 때가 있습니다. 셀이 몇 개 되지 않으면 일일이 수작업으로 공백을 없애도 되지만, 좀 더 복잡한 경우는 VBA(매크로)를 사용하는 것이 효율적입니다. 가령, 왼쪽 또는 오른쪽의 공백만 지우고 싶을때, 아니면 양쪽 공백을 모두 지우고 싶을때 등 다양한 상황에서 좀 더 쉽고 빠르게 작업을 할 수 있습니다. 우선, VBA(매크로)를 처음 하시는 분들은 아래 링크를 참고해 주세요. 2020.10.25 - [IT와 친해지기/엑셀 VBA 자료실] - 엑셀VBA(매크로) - 시작하기 엑셀VBA(매크로) - 시작하기 직장인들은 대부분 엑셀에 익숙하실 겁니다. 하지만, 엑셀을 잘 활용하시는 분들은 아마 드물겁니다. .. 2021. 7. 31.
엑셀 VBA(매크로) - 알람창(경고창, Alert) 메세지 나타나지(뜨지) 않게 설정 방법 (알람 무시하기) https://cafe.naver.com/111coding/44?tc=shared_link 파이썬을 10분만에 배우는 방법프로그램밍 언어를 공부하는 것은 외국어를 배우는 것과 상당히 흡사합니다. 우리는 대체로 초등학교 3년, 중학교 3년, 고등학교 3년 최소 9년은 영어를 배웁니다. 하지만,...cafe.naver.com VBA를 이용하여 코딩을 하다보면 가끔 알람창이 뜰때가 있습니다. 이런경우 알람을 강제로 뜨지 않게 하는 방법을 포스트 해 보겠습니다. 우선, VBA(매크로)를 처음 하시는 분들은 아래 링크를 참고해 주세요. 2020.10.25 - [IT와 친해지기/엑셀 VBA 자료실] - 엑셀VBA(매크로) - 시작하기 엑셀VBA(매크로) - 시작하기직장인들은 대부분 엑셀에 익숙하실 겁니다. 하지만,.. 2021. 7. 29.
Python(파이썬) openpyxl - 엑셀 글자정렬(Text Align) 파이썬의 openpyxl 모듈을 사용하여 엑셀에서 글자를 정렬해 보도록 하겠습니다. openpyxl 의 Workbook을 사용해서 새로운 파일을 만드시거나, load_workbook을 사용해서 기존 파일을 이용합니다. openpyxl.styles 에서 Alignment 를 import 합니다. 저는 새로운 워크시트를 만들어서 'wb'라는 변수에 저장하고, wb 의 활성화 된 시트를 'ws'로 저장하겠습니다. 글자정렬이 제대로 잘 되었는지 쉽게 확인해 보기 위해 행과 열너비를 크게 했습니다. 방법은 위와 같이 하시면 됩니다. 정렬을 설정할 셀의 alignment 속성에 Alignment(horizonal='ceneter', vertical='bottom') 이런식으로 설정해 주면 됩니다. horizonta.. 2021. 5. 5.
Python(파이썬) openpyxl - 엑셀 셀 테두리 자동으로 선 그리기 Python을 이용하여 엑셀의 원하는 셀에 테두리를 그릴 수 있습니다. 표를 만들거나 문서를 좀 더 보기 좋게 자동으로 만들고 싶을때 활용하면 좋을것 같습니다. 우선 모듈을 불러옵니다. openpyxl.styles 에서 Border 와 Side를 임포트 해 줍니다. 일일이 선을 그릴때마다 속성을 지정해 주기 귀찮으니깐 'box'라는 변수에 속성을 지정해 줍니다. 셀에 지정해 줄때는 ws['A2'] = box 이런식으로 적어 주시면 됩니다. 그런데 표를 만들때는 범위가 "A1:E50" 이런식으로 되기 때문에 for 문을 사용해서 셀 하나씩 테두리를 그려줘야 합니다. (VBA는 좀 더 Range("A1:E50").borders 이런식으로 좀 더 간단한데, 파이썬으로 하려니깐 귀찮네요) 파이썬으로 매크로를 만.. 2021. 4. 22.
엑셀 VBA(매크로) - 엑셀을 이용하여 Outlook 메일 쉽게 자동으로 보내는 방법 엑셀 VBA(매크로)를 이용해서 자동으로 Outllook 메일을 보내는 방법이 있습니다. 우선, VBA(매크로)를 처음 하시는 분들은 아래 링크를 참고해 주세요. 2020.10.25 - [IT와 친해지기/엑셀 VBA 자료실] - 엑셀VBA(매크로) - 시작하기 엑셀VBA(매크로) - 시작하기 직장인들은 대부분 엑셀에 익숙하실 겁니다. 하지만, 엑셀을 잘 활용하시는 분들은 아마 드물겁니다. 프로그램을 잘 하시는 분들은 파이썬이나 C언어, 자바 등을 가지고 필요한 도구들을 만들어 dotsnlines.tistory.com 처음 하시더라도 차근차근 따라하시면 무리없이 쉽게 하실 수 있습니다. 엑셀파일에 수신사, 참조, 제목, 메일내용 등을 대충 설정해 줍니다. Outlook App을 사용하기 위해서 간단한 설정.. 2021. 4. 15.
파이썬으로 엑셀 VBA 매크로를 작동 시키는 방법(Calling Excel VBA Macro script by using Python script) 지난번 포스트에 이어서 파이썬을 통해 엑셀 VBA 매크로를 작동하는 방법에 대해서 포스트 해 보겠습니다. 시작하기 앞서 addin install 과 약간의 설정이 필요한데 이 부분은 아래 포스틀 참고하시기 바랍니다. 2021.03.31 - [파이썬/Python & Excel & VBA] - xlwings - 설치 및 addin 설정 방법 xlwings - 설치 및 addin 설정 방법 제가 컴퓨터 전공도 아니고 업무를 좀 편하게 하고자 VBA를 잔기술을 먼저 배웠습니다. 그런탓에 요즘 유행하는 파이썬을 이용해서 업무 자동화 하기보다는 VBA를 사용하기가 개인적으로는 훨씬 dotsnlines.tistory.com 우선 예제로 엑셀 VBA 코드를 작성해 보겠습니다. 파이썬 파일과 같은 디렉토리에 위와 같이 .. 2021. 4. 1.
xlwings - 설치 및 addin 설정 방법 제가 컴퓨터 전공도 아니고 업무를 좀 편하게 하고자 VBA를 잔기술을 먼저 배웠습니다. 그런탓에 요즘 유행하는 파이썬을 이용해서 업무 자동화 하기보다는 VBA를 사용하기가 개인적으로는 훨씬 편하게 느껴집니다. 하지만, 확장성은 VBA가 Python을 따라가지 못하는 탓에 고민을 계속 하다가 좋은 모듈을 하나 발견했습니다. "xlwings'라는 모듈입니다. 이 모듈을 사용하면 파이썬으로 VBA 코드를 구동할 수 있습니다. 반대로 VBA로 파이썬 코드도 구동할 수 있고요. Anaconda를 설치하시면 패키지로 자동 설치가 되는 모듈입니다.(아나콘다를 아직 설치하지 않으셨다면 아래 링크의 포스트를 참고하시기 바랍니다.) 2020.11.12 - [파이썬/시작 - 아나콘다,파이참 설치] - 파이썬 시작하기 1 -.. 2021. 3. 31.
python openpyxl - 파일을 열어서 데이터 입력, 가져오기 이번 포스트는 만들어진 엑셀 파일의 데이터를 가져오고, 입력하는 방법에 대하여 알아 보도록 하겠습니다. from openpyxl import load_workbook 모듈을 가져옵니다. wb = load_workbook('cell.xlsx') ws = wb.active 가져올 파일을 wb 변수에 담고, 활성화 된 시트를 ws 변수에 담습니다. for x in range(1,11): for y in range(1,11): print(ws.cell(column=x, row=y).value, end=" ") print() for 문을 써서 column 과 row를 1부터 10까지의 좌표에 값을 가져옵니다. 결과값은 위와 같습니다. 셀의 개수(행과 열의 개수)를 모를때는 아래와 같이 작성하면 됩니다. for x.. 2021. 3. 23.
Python openpyxl - 셀에 값 입력하기 openpyxl 모듈을 이용하여 셀을 다루는 방법에 대해서 알아보도록 하겠습니다. 우선 모듈을 불러옵니다. random 모듈은 셀을 무작위 수로 채울때 쓰기위해 일단 불러오겠습니다. 워크북을 하나 생성해서 wb라는 변수에 만들고, 활성화 된 시트를 ws 변수로 지정하겠습니다. 시트명ㅇ느 'test sheet'로 만들겠습니다. A1 셀부터 B3 셀까지 값을 넣어줍니다. ws['A1'] 으로 프린트를 하면 아래와 같이 셀의 정보가 출력이 됩니다. ws['A2'].value 라고 해야지 값이 출력이 됩니다. 셀의 위치는 숫자로 표시하면 더욱 유용합니다. ws.cell(column=3, row=1, value=10) 이런식으로 값을 입력할 수도 있습니다. 결과값이 제대로 출력이 된 것을 확인할 수 있습니다. f.. 2021. 3. 21.
엑셀 VBA(매크로) - 워크시트(Work Sheet) 삽입하기 VBA를 이용해서 워크시트를 삽입하는 프로그램을 작성해 보도록 하겠습니다. Worksheet를 삽입하기 위해서는 아래의 코드를 이용하면 됩니다. Worksheets.Add After:=Worksheets(Worksheets.Count) 예제를 한번 다뤄보도록 하겠습니다. 개발도구 메뉴에서 Visual Basic 메뉴로 들어갑니다. VBA 창에서 '삽입' 메뉴에서 '모듈(M)'을 눌러서 모듈을 추가합니다. 우선 'Sub'를 생성한 다음에 변수명을 정의해 줍니다. Inputbox를 만들어서 'NewSheetName'이라는 변수에 입력값을 저장 받도록 합니다. InputBox에 아무것도 적지 않으면, 실행이 되지 않도록 합니다. sheetnum를 '-1'로 지정하면, 뒤에 If 문에서는 실행이 되지 않도록 설.. 2021. 1. 28.
엑셀 VBA(매크로) - Select Case 조건문 VA 조건문에는 Select Case 조건문이 있습니다. Select Case 조건문은 여러 조건에서 각각 다른 결과치를 처리할 때 편리합니다. 다음은 Select Case 조건문의 기본 구조 입니다. Select Case 판단할 조건의 대상 Case 조건 A 처리 A Case 조건 B 처리 B Case 조건 C 처리 C Case Else 처리 X End Select 예제를 한번 다뤄보도록 하겠습니다. 개발도구 메뉴에서 Visual Basic 메뉴로 들어갑니다. VBA 창에서 '삽입' 메뉴에서 '모듈(M)'을 눌러서 모듈을 추가합니다. Inputbox에서 받은 값을 'score'라는 변수에 저장합니다. 각 case 별로 점수에 따라 "A" ~ "F" 까지 점수의 범위를 지정합니다. 위의 그림과 같이 실행.. 2021. 1. 14.
엑셀 VBA(매크로) - For ~Next 순환문 (반복문) For~Next 순환문(반복문)은 특정 변수명이 초기값부터 종료값까지 특정 수만큼 증가하면서 처리할 작업을 반복 실행합니다. for 변수명 = 초기값 to 종료값 step 증가수 처리 next 변수명step은 생략을 해도되며, 생략하면 1씩 증가 합니다. 예제를 한번 다뤄보도록 하겠습니다. 개발도구 메뉴에서 Visual Basic 메뉴로 들어갑니다. VBA 창에서 '삽입' 메뉴에서 '모듈(M)'을 눌러서 모듈을 추가합니다. 위와 같이 코드를 입력합니다. Cell의 1행 2열부터 1000행까지 3숫자를 입력해 보는 코드입니다. "F5"를 눌러서 실행해 봅니다. 제대로 실행 된 것을 확인해 볼 수 있습니다. 개인적으로 For ~ Next 문은 VBA에서 가장 자주 사용되는 구문으로 생각이 됩니다. 대부분 엑.. 2021. 1. 12.
엑셀 VBA(매크로) - If ~ End if 조건문 If 조건문은 특정 조건을 만족할 경우 특정 작업을 실행하는 구문입니다. If 조건문은 기본적으로 IF를 입력하고 뒤에 해당조건을 입력한 뒤 Then 까지 같은 줄에 적습니다. 다음행에는 조건에 해당될때 실행되는 구문을 입력하고, 마지막에는 End If를 입력합니다. If 조건 Then 처리 End If 예제를 한번 다뤄보도록 하겠습니다. 개발도구 메뉴에서 Visual Basic 메뉴로 들어갑니다. VBA 창에서 '삽입' 메뉴에서 '모듈(M)'을 눌러서 모듈을 추가합니다. 그리고 엑셀 시트의 "A1" 셀에 100이라고 입력 합니다. 그리고 다시 VBA 코딩창으로 이동해서 'F5'를 눌러서 실행해 봅니다. 이렇게 성공적으로 대화창이 실행됩니다. 이번에는 ElseIf와 Esle문을 사용해서 예제를 한번 실습.. 2021. 1. 9.
엑셀 VBA(매크로) - with ~ end with 구문 VBA 코드를 작성하다 보면 동일한 개체에 반복해서 사용할 경우가 많습니다. 예를들어 sheets(1) 이라는 개체에서 여러 셀을 사용할때 아래와 같이 번거로움이 있습니다. sheets(1).cells(1,3) = test sheets(1).cells(1,3).font.color = vbBlue sheets(1).cells(1,4).interior.color = 36 . . . 이럴때에는 with ~ endwith 문으로 반복작업을 줄이고, 코드를 깔끔하게 작성할 수 있습니다. 개발도구 메뉴에서 Visual Basic 메뉴로 들어갑니다. VBA 창에서 '삽입' 메뉴에서 '모듈(M)'을 눌러서 모듈을 추가합니다. 위와 같이 코드를 입력하고 실행합니다. 제대로 실행이 된 것을 확인할 수 있습니다. 반복해서 .. 2021. 1. 8.
엑셀 VBA(매크로) - InputBox 함수 MsgBox 함수와 비슷한 형태로 사용하는 InputBox 함수가 있습니다. InputBox 함수는 메세지 상자를 이용해 값을 입력 받는 작업을 수행할 때 주로 사용합니다. 개발도구 메뉴에서 Visual Basic 메뉴로 들어갑니다. VBA 창에서 '삽입' 메뉴에서 '모듈(M)'을 눌러서 모듈을 추가합니다. 간단하게 위의 그림과 같이 입력하면 아래와 같이 대화창이 실행 됩니다. Inputbox 함수는 아래와 같이 구성되어 있습니다. InputBox 'prompt', 'title', default - prompt : 대화상자에 메세지로 나타나는 텍스트입니다.(필수요소) - title : 대화상자의 제목 표시줄에 나타나는 텍스트입니다. 생략하면 'Microsoft Excel' 이라고 나타납니다.(선택요소) .. 2021. 1. 7.
엑셀 VBA(매크로) - MsgBox 사용하기 'MsgBox'와 'InputBox'는 VBA에서만 사용하는 일종의 함수입니다. 'MsgBox'함수로 원하는 대화상자를 나타내고, InPutBox 함수로는 사용자로부터 원하는 값을 입력받는 대화형 작업을 구현할 수 있습니다. 먼저 'MsgBox' 함수부터 살펴 보겠습니다. 개발도구 메뉴에서 Visual Basic 메뉴로 들어갑니다. VBA 창에서 '삽입' 메뉴에서 '모듈(M)'을 눌러서 모듈을 추가합니다. 위의 그림과 같이 코드를 입력합니다. MsgBox 함수는 'Prompt', 'Buttons', 'Title' 이렇게 세 가지 인수로 이루어져 있습니다. 각 인수는 쉼표로 구분하며 괄호는 생략할 수 있습니다. MsgBox prompt, buttons, title 이렇게 사용 하시면 됩니다. 위의 예제는 .. 2021. 1. 6.
openpyxl - 파이썬으로 시트(Sheet) 이름 출력하기 파이썬으로 엑셀을 불러와서 시트이름을 출력해 보겠습니다. import openpyxl 우선 모듈을 임포트 합니다. wb = openpyxl.load_workbook(r'C:\Users\Administrator\Desktop\매출현황.xlsx') 필요한 엑셀파일을 불러와서 'wb'라는 변수에 저장합니다. openpyxl에서는 엑셀파일을 불러올때 'load_workbook('경로')를 써 줍니다. 경로를 작성할 때는 몇가지 방법이 있는데 'C:\\Users\\Administrator\\Desktop\\매출현황.xlsx'이런식으로 작성하거나, 앞에 'r'을 적어주면 됩니다. 같은 폴더에 있으면 '매출현황.xlsx'이라고 적어 주시면 됩니다. ws = wb.active 활성화 된 시트(Sheet)를 ws라는 변.. 2020. 12. 22.
엑셀 VBA(매크로) - 자동으로 행, 열 맞추기 Visioual Basic Applicaiton을 이용하여 자동으로 열을 맞추는 방법입니다. 개발도구 메뉴에서 Visual Basic 메뉴로 들어갑니다. VBA 창에서 '삽입' 메뉴에서 '모듈(M)'을 눌러서 모듈을 추가합니다. 아래와 같이 임으로 엑셀창을 열어서 행 너비를 넘어가도록 글자를 무작위로 입력해 보겠습니다. 추가된 모듈에서 아래와 같이 코드를 입력합니다. Sub sb열맞춤() Columns("C:I").AtuoFit End Sub 실행을 해 보면 아래와 같이 자동으로 열이 맞춰집니다. 자동으로 행 맞추는 코드는 아래와 같습니다. Sub sb행맞춤() Columns("1").AtuoFitRows("1:17").EntireRow.AutoFit End Sub 2020. 12. 9.
openpyxl - 파이썬으로 엑셀파일 만들기 파이썬으로 엑셀을 다뤄 보겠습니다. 어떤 모듈을 써야하나 검색했는데 'openpyxl'이라는 모듈이 괜찮다고 하더라구요. 단, 이 모듈은 'xls' 즉 2003이하 버전의 엑셀은 호환이 안 된다네요. 우선 모듈을 불러 오겠습니다. import openpyxl 이렇게 적으셔도 되고, 'from openpyxl import Workbook' 이라고 적으셔도 됩니다. wb = openpyxl.Workbook() 엑셀 워크북을 생성해서 'wb'라는 변수에 저장합니다. ws = wb.active 활성화 된 시트를 'ws'라는 변수에 저장합니다. ws['A1'] = 'test' 'A1' 의 셀에 'test'라고 적어보겠습니다. wb.save(r'C:\Users\passi\Desktop\Test.xlsx') 그리고 .. 2020. 12. 8.