자동화16 python(파이썬) openpyxl - 열 위치를 숫자로 가져오기(Get column's index number) 파이썬을 이용해서 엑셀을 사용하는 방법입니다. 반복문을 사용할때 row는 숫자를 이용하면 되는데, 열(column)은 'A', 'B', 'C' ... 이런식으로 되어 있어서 사용하기가 쉽지 않습니다. coulum 위치를 숫자로 변환해서 사용하면 편합니다. openpyxl.utils 에서 get_column_letter 모듈을 임포트 합니다. get_column_letter(index) 이런 식으로 사용하면 됩니다. index 값에 3을 넣으니 'C'가 반환 되었습니다. 2021. 4. 24. 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(매크로) - 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. 엑셀 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. 엑셀 VBA(매크로) - Hyperlink(하이퍼링크) 자동으로 넣기 VBA를 통해 자동으로 HyperLink를 작성하는 방법입니다. With Sheets(1) .Hyperlinks.Add anchor:=.Cells(3,1), Address:=file.path & "\" & file.Name, TextToDisplay:="파일열기" End with 하이퍼링크와 관련된 코드만 올렸는데 'file'은 외부파일을 가져오는 변수인데, 앞의 코드가 생략된 점 참고바랍니다. - Anchor : 링크를 걸 셀 - Address : 인터넷 경로(ex. www.daum.net) 이나 파일경로(ex. C://...) - SubAddress : 시트 이동이나 링크걸 때 - TextToDisplay : 링크를 걸고 보여지는 글자(ex. "파일열기") 2020. 11. 11. 엑셀 VBA(매크로) - 자동으로 인쇄영역 설정하기 매크로를 이용하여 인쇄영역을 설정해 보도록 하겠습니다. 개발도구 메뉴에서 Visual Basic 메뉴로 들어갑니다. VBA 창에서 '삽입' 메뉴에서 '모듈(M)'을 눌러서 모듈을 추가합니다. Sub sbPrintArea With Sheets(1) .PageSetup.PrintArea = Range(.Cells(1, 2), .Cells(50, 24)).Address End Sub 반복문 즉 'For' 문이나 'While'문을 함께 쓰면 행/열이 변할 때 마다 자동으로 인쇄영역을 설정할 수 있습니다. 2020. 11. 8. 엑셀 VBA(매크로) - 자동으로 선 그리기 VBA를 사용하여 셀에 선을 그려 보도록 하겠습니다. 개발도구 메뉴에서 Visual Basic 메뉴로 들어갑니다. VBA 창에서 '삽입' 메뉴에서 '모듈(M)'을 눌러서 모듈을 추가합니다. 우선 바깥쪽 테두리 선을 그려보도록 하겠습니다. 코딩 창에서 아래와 같이 코드를 타이핑 합니다. Sub sbLine() Range("B2:B3").BorderAround LineStyle:=xlContinuous, Weight:=xlThick, ColorIndex:=1 End Sub 이제는 모든 면에 선을 그리도록 해 보겠습니다. Sub sbLine() With Range("B4:E20").Borders .LineStyle = 1 .ColorIndex = 1 .Weight = xlThick End With End Su.. 2020. 11. 7. 엑셀 VBA(매크로) - 속도를 향상 시키기 Visual Basic Application 으로 코딩을 하시다 보면 코드가 길어 질 수록 점점 느려지는 것을 느끼실 겁니다. 특히나 엑셀은 Data가 천 줄이 넘어가거나 배열 수식이 걸려 있으면, 열기도 오래 걸립니다. 이때, 아래와 같이 코드를 적으시면 시간을 획기적으로 단축 시킬수 있습니다.Application.Application.ScreenUpdating = False Application.Calculation = xlCalculationManual ~~~ 작성하신 코드 ~~~ Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic'Application'은 엑셀의 본연의 기능을 불러올 때 쓰는 코드이며,.. 2020. 11. 5. 엑셀VBA(매크로) - 셀에 음영넣기 셀에 VBA를 사용하여 음영색을 넣는 방법입니다. sub sbTest() Cells(1,1).interior.ColorIndex = "6" end Sub "6"은 노란색을 의미하며 색상은 아래를 참고하세요. 2020. 11. 2. 이전 1 다음