多くのファイルでいくつかのカスタム プロパティ値を変更する必要があります。コードの例を次に示します-単一のファイルに対してどのように行うか:
import win32com.client
MSWord = win32com.client.Dispatch("Word.Application")
MSWord.Visible = False
doc = MSWord.Documents.Open(file)
doc.CustomDocumentProperties('Some Property').Value = 'Some New Value'
doc.Save()
doc.Close()
MSWord.Quit()
同じコードを"Excel.Application"
(マイナーな変更を加えて - 動作させるためだけに) 実行すると、優れた結果が得られます。ただし、doc.Save()
またはdoc.SaveAs(same_file)
MSWord を使用しているときは、黙って失敗します。理由はわかりませんが、変更が保存されません。
私の回避策はSaveAs
、別のファイルを使用することです。これもうまく機能します。しかし、なぜ MSWord ファイルに対してこのような奇妙な動作をするのか、またどのように修正できるのかを理解したいですか?
編集:try/exceptのサイレント失敗の原因で人々を誤解させないように、コードを変更しました。しかし、私のコードでその欠陥を見つけてくれたすべての人に感謝します:)