이전 편에서는 xlwings 의 설치 방법과 엑셀 VBA에서 파이썬 코드를 동작시키는 방법을 정리해보았다.
(참고링크 : 2021.06.06 - [코딩/Python] - [Python/파이썬] 엑셀 VBA와 파이썬의 결합 - xlwings 모듈)
xlwings는 엑셀에서 파이썬 코드를 불러오는 것과 반대로 엑셀 VBA 코드를 파이썬에서 동작시킬 수 있다. 이번 포스팅에서는 임의의 VBA 코드를 작성하고 파이썬에서 해당 VBA 코드를 실행시키는 부분을 정리해보려 한다. 그 전에 xlwings모듈 설치와 엑셀 VBA 환경설정이 진행되어야 한다. 해당 내용은 이전 글에서 포스팅하였으므로 위 참고링크를 확인!
먼저 아래와 같이 임의의 엑셀 VBA 코드를 작성해보았다. sheet1에 A열 1~10행까지 "Two hands Place"를 10번 출력하는 VBA 코드이다. 해당 엑셀파일의 파일명은 'py1.xlsm' 이다. VBA를 실행시켜야 하므로 반드시 확장자는 .xlsm 이어야 한다.
1. 엑셀 VBA 코드 작성 : 파이썬에서 실제 실행시킬 코드
엑셀 VBA에서 특정 모듈을 작성할 때 Sub 모듈명() ~ End Sub로 지정한다. 내가 작성한 코드는 'test'라는 이름을 가지고 있는 모듈이며, 파이썬에서 'test'라는 이름을 가지고 매크로를 불러올 예정이다.
<코드>
Sub test()
Dim i As Integer
Dim sht1 As Worksheet
Set sht1 = Sheets("Sheet1")
With sht1
For i = 1 To 10
.Cells(i, 1).Value = "Two Hands Place" & i
Next i
End With
End Sub
2. 파이썬 코드 작성 : VBA 매크로 실행
파이썬에서 엑셀 VBA 코드를 동작시키는 방법은 간단하다. 엑셀파일을 열고 엑셀 VBA 함수를 파이썬 함수로 정의한 후 함수를 실행시키면 된다.
<코드>
import xlwings as xw
#엑셀 매크로파일 열기(path는 매크로 파일이 있는 경로)
path = r"C:\Users\Desktop\VS CODE\Project\xlwingstest"
wb = xw.Book(path+"\py1.xlsm")
#엑셀 VBA의 매크로 함수 'test'를 파이썬 함수로 지정
macro1 = wb.macro('test')
#함수 실행
macro1()
<결과>
3. 코드를 동작시킨 결과 엑셀 파일 저장 방법
위 파이썬 코드 상으로 엑셀파일을 실행시키고 함수를 동작시키면 결과를 바로 확인할 수 있다. 엑셀파일을 종료하면 해당 결과 파일은 저장되지 않는다. 저장하려면 아래와 같이 xlwings의 save 함수를 사용해야 한다. 사용법은 save("저장시킬 파일명")이다.
wb.close는 열었던 엑셀파일을 종료시킨다.
<코드>
wb.save("py1_result.xlsm")
wb.close
'코딩 > Python' 카테고리의 다른 글
[Python/파이썬] 객체를 함수 매개변수로 전달하기 - 전역변수, 지역변수, 매개변수 (0) | 2021.06.15 |
---|---|
[Python/파이썬] 자료형 - Dictionary 1편 : 기초 (0) | 2021.06.13 |
[Python/파이썬] 엑셀 VBA에서 파이썬 코드 실행시키기 - xlwings 모듈 (1) | 2021.06.06 |
[Python/파이썬] 특정 시간에 파이썬 코드 동작시키기 - schedule 모듈 (0) | 2021.05.16 |
[Python/파이썬] Pandas Dataframe 결합 : Merge (0) | 2021.04.25 |