Dandy Now!
  • [파이썬 신병 교육대] MDB로 부터 Packing List 자동출력 프로그램_2주차에 만난 황당한 AttributeError
    2021년 12월 21일 10시 12분 06초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    "Packing List 자동 출력 프로그램"

    을 만들고 있고,

    이제 2주차가 되었다.

    그런데 다음과 같은 에러로 상당히 애를 먹었다.

    (mysite) C:\pyworkspace\packing>c:/venvs/mysite/Scripts/python.exe c:/pyworkspace/packing/packing.py
    count     75.0
    sum      776.5
    dtype: float64
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
        return self.func(*args)
      File "c:\pyworkspace\packing\packing.py", line 158, in okClick
        pkPrint(lot,company)
      File "c:\pyworkspace\packing\packing.py", line 130, in pkPrint
        sheets = excel.Workbooks.Open(os.getcwd()+'/pk_print.xlsm')
      File "c:\venvs\mysite\lib\site-packages\win32com\client\dynamic.py", line 639, in __getattr__
        raise AttributeError("%s.%s" % (self._username_, attr))
    AttributeError: Excel.Application.Workbooks

     

     

    "AttributeError: Excel.Application.Workbooks"

     

    이 메시지로 보아하니 엑셀과 관련된 속성에러로 보이는데,

    관련해서 특별히 변경한 코드도 없었다.

    2주차에서 개선하고자 했던 항목은 다음과 같았는데,

    1. 리스트 고객사 삭제 기능
    2. 잘못된 로트 번호 입력시 처리
    3. 경로 문제(현재는 C:\pyworkspace\packing\ 에서만 실행 가능)

     

    2번 항목을 개선하기 위해 코드를 수정하던 중이었다.

     

    이 문제를 해결하기 위해

    구글링도 하고,

    소스코드를 처음부터 끝까지 다시 살펴보고,

    1주차 이후에 수정된 코드를 수정전으로 되돌려 보기도 했다.

    하지만 그 어떤 방법으로도 해결할 수 없었다.

     

    문제의 실마리는 황당한 곳에 있었다.

     

    엑셀 프로그램이 완전히 종료되지 않은 상태

     

    그림과 같은 엑셀 창이 떠 있는 상태,

    그로 인해 아래의 코드가 실행되지 못한 것이다.

    excel.Quit()

     

    정리하자면 이전에 실행된 엑셀이 완전히 종료되지 않은 상태에서

    프로그램을 실행하다 보니 발생한 에러였다.

     

    AttributeError 에 대한 예외처리를 3주차 개선 사항에 포함 시켜야 겠다!

    728x90
    반응형
    댓글