前回まで動いていたコードが動かなくなった
pywin32経由でExcelアプリを開いて表示するだけの単純なコードです。
正常に動作していたのですが、ある日いきなりエラーが出て動かなくなりました。
import win32com.client
from time import sleep
app = None
try:
app = win32com.client.gencache.EnsureDispatch("Excel.Application")
except Exception:
try:
app = win32com.client.DispatchEx("Excel.Application")
except Exception:
try:
# 起動しているExcelを用いる
self.app = win32com.client.GetObject(Class="Excel.Application")
except Exception as e:
raise e
exit()
app.Visible = True
app.DisplayAlerts = False
sleep(10)
app.Quit()
そのエラーがこちらです。
Fix for module win32com.gen_py has no attribute 'CLSIDToPackageMap'
詳しい原因は不明なのですが、gen_pyというファイルが邪魔をしているそうですので、そのファイルを削除してあげれば良いらしいです。
解決方法
下記のコードをPowershellで実行するだけです。
私の場合はAnaconda Promptで実行したところ、エラーが出なくなりました。
Remove-Item -path $env:LOCALAPPDATA\Temp\gen_py -recurse
参考資料:https://gist.github.com/rdapaz/63590adb94a46039ca4a10994dff9dbe
誰かの助けになれば幸いです。