動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2207 ビルド15427.20210 Microsoft Store)+ Python 3.8.3 + pywin32 228
「pywin32 saveできない」
という検索キーワードでアクセスがありました。
pywin32・win32com.clientを使って、何らかのアプリケーションで保存をしようとしたのに失敗し、その保存ができない理由・原因を調べていらしたのでしょう。
[スポンサードリンク]
保存ができない原因はいろいろと考えられますが、VBAに慣れた方がやってしまいがちなミスについて、ここではお伝えしておきます。
Pythonではメソッドのカッコが必要
Pythonのコードをしばらく書かないでいると私もウッカリやってしまうのですが、メソッドのカッコを書き忘れていないかを、まず確認しましょう。
Excelブックが開かれている状態で以下のコードを実行すると、アクティブなワークシートのA1セルに「hello, world!」と書き込まれてから、上書き保存が実行されます。
import win32com.client
xl_app = win32com.client.GetObject(Class='Excel.Application')
xl_app.Range('A1').Value = 'hello, world!'
xl_App.ActiveWorkbook.Save()
xl_app = win32com.client.GetObject(Class='Excel.Application')
xl_app.Range('A1').Value = 'hello, world!'
xl_App.ActiveWorkbook.Save()
上記コードの、
xl_App.ActiveWorkbook.Save()
の部分、Saveメソッドのカッコを、VBAのコードを書く癖で
xl_App.ActiveWorkbook.Save
と書いて実行した場合には、
<bound method Save of <COMObject <unknown>>>
といったメッセージが表示され、上書き保存は行われません。
ここではExcelのWorkbook.Saveメソッドを例にしていますが、メソッドのカッコを書き忘れると動かない現象は、pywin32を使ってアプリケーションを操作する場合に、頻繁に発生します。
VBAに慣れている方は注意しましょう。
最終更新日時:2022-08-25 16:53
[スポンサードリンク]
Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientでSaveができない??