본문 바로가기
Python/xlwings

xlwings RuntimeError: The specified workbook is not open 오류 해결하기

by PySun 2024. 11. 26.
반응형

소개

xlwings를 사용하다 보면 종종 'RuntimeError: The specified workbook is not open'이라는 오류에 직면하게 됩니다. 이 문제는 특정한 워크북에 접근하고자 할 때, 해당 워크북이 실제로 열려있지 않거나 xlwings에 의해 인식되지 않아서 발생합니다. 이 블로그 글에서는 이 오류의 원인과 해결 방법에 대해 상세하게 알아보겠습니다.

에러 발생 예시 코드

먼저, 'RuntimeError: The specified workbook is not open' 에러가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

import xlwings as xw

# 지정한 워크북 가져오기
wb = xw.Book('my_workbook.xlsx')  # 엑셀 파일이 열려있지 않으면 오류 발생
print(wb.sheets)

에러 해결 방법

1. 워크북 열기

가장 간단한 방법은 해당 워크북을 xlwings로 직접 열어주는 것입니다. 아래의 코드를 사용해서 엑셀 파일을 열고 데이터를 다룰 수 있습니다.

import xlwings as xw

# 워크북 열기
wb = xw.Book('my_workbook.xlsx')  # 파일이 열려있지 않으면 엑셀이 열립니다.
print(wb.sheets)

2. 현재 열린 워크북 확인

현재 열린 모든 워크북 목록을 확인하여, 원하는 워크북이 열려 있는지 확인할 수 있습니다. 아래 코드를 통해 현재 열린 워크북의 목록을 출력해 보세요.

import xlwings as xw

# 현재 열린 모든 워크북 확인
open_workbooks = xw.apps[0].books
for wb in open_workbooks:
    print(wb.name)

3. 엑셀 어플리케이션 확인

혹시 엑셀 어플리케이션이 실행되고 있는지, 그리고 해당 워크북을 열 수 있는지 확인하는 것도 중요합니다. 엑셀 어플리케이션이 닫혀있다면 위의 코드는 정상적으로 작동하지 않을 수 있습니다.

import xlwings as xw

# 엑셀 어플리케이션 상태 확인
if xw.apps:  # 엑셀이 실행 중이라면
    print("엑셀 어플리케이션이 실행 중입니다.")
else:
    print("엑셀 어플리케이션이 닫혀 있습니다. 실행해 주세요.")

마무리

이 블로그 글에서는 xlwings에서 발생하는 'RuntimeError: The specified workbook is not open' 오류에 대한 여러 해결 방법을 살펴보았습니다. 워크북을 열거나 현재 열린 워크북을 확인하고, 엑셀 어플리케이션의 상태를 점검함으로써 이러한 문제를 해결할 수 있습니다. xlwings를 활용할 때는 항상 파일이 열려 있는지 확인하고, 적절한 접근 방식을 선택하는 것이 중요합니다.

반응형