본문 바로가기
Python/xlwings

xlwings RuntimeError: Workbook is already open 오류 해결하기

by PySun 2024. 12. 18.
반응형

소개

xlwings를 사용하다가 'RuntimeError: Workbook is already open' 에러가 발생하셨다면 당황스러울 수 있습니다. 이 오류는 보통 동일한 워크북을 두 번 열려고 할 때 나타납니다. Excel 파일을 자동으로 조작하려는 경우, 이러한 에러를 해결하는 방법을 알아보겠습니다.

에러 발생 예시 코드

먼저, 'RuntimeError: Workbook is already open' 에러가 발생할 수 있는 간단한 예시 코드를 살펴봅시다.

import xlwings as xw

# 이미 열려있는 워크북을 다시 열려고 시도
workbook = xw.Book('example.xlsx')  # 이미 열려있는 경우 에러 발생

에러 해결 방법

1. 워크북이 이미 열려있는지 확인하기

먼저, 열려 있는 모든 워크북을 확인하고, 이미 열려 있다면 해당 워크북에 접근합니다.

import xlwings as xw

# 모든 열려 있는 워크북 가져오기
opened_workbooks = xw.apps[0].books

# 특정 워크북이 열려 있는지 확인
workbook_name = 'example.xlsx'
if workbook_name in [wb.name for wb in opened_workbooks]:
    workbook = xw.Book(workbook_name)  # 열린 워크북을 사용
else:
    workbook = xw.Book(workbook_name)  # 새로운 워크북 열기

2. 기존 워크북을 닫기

열려 있는 워크북이 더 이상 필요하지 않다면, 해당 워크북을 닫고 다시 열 수 있습니다.

import xlwings as xw

# 모든 열려 있는 워크북 가져오기
opened_workbooks = xw.apps[0].books

# 워크북이 열린 경우 닫기
for wb in opened_workbooks:
    if wb.name == 'example.xlsx':
        wb.close()  # 워크북 닫기
        break

# 워크북 열기
workbook = xw.Book('example.xlsx')

마무리

이 블로그 글에서는 xlwings에서 발생하는 'RuntimeError: Workbook is already open' 에러를 해결하는 방법에 대해 알아보았습니다. 워크북이 이미 열려 있는지 확인하거나, 불필요한 워크북을 닫고 새로운 워크북을 여는 방법을 통해 이러한 문제를 피할 수 있습니다. Excel과 자동화를 사용할 때는 특히 주의하여 작업을 진행하는 것이 중요합니다. 항상 성취감을 가지고, 때로는 이런 오류들이 여러분의 눈높이를 높여줄 기회가 된다는 점을 잊지 마세요!

반응형