본문 바로가기

코딩/Python

[Python/파이썬] 파이썬에서 엑셀 VBA 실행시키기 - xlwings 모듈

반응형

 

 

  이전 편에서는 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

 

 

<엑셀 VBA 코드 작성>

 

 

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

 

<저장 결과>

 

728x90