gpt4 book ai didi

python - 为什么保存 MSWord 文档会悄无声息地失败?

转载 作者:太空宇宙 更新时间:2023-11-03 15:29:20 34 4
gpt4 key购买 nike

我需要更改许多文件中的一些自定义属性值。这是一个代码示例 - 我如何为单个文件执行此操作:

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" 运行相同的代码(稍作改动 - 只是为了让它工作)给我很好的结果。但是,当我对 MSWord 使用 doc.Save()doc.SaveAs(same_file) 时,它会默默地失败。我不知道为什么,但没有保存更改。

现在我的解决方法是对不同的文件使用SaveAs,它也很好用。但我想了解为什么我对 MSWord 文件有如此奇怪的行为以及如何修复它?

编辑:我更改了我的代码,而不是误导那些因 try/except 而导致静默失败的人。然而,感谢他们在我的代码中发现了这个缺陷:)

最佳答案

您以错误的方式使用了 CustomDocumentProperties,正如其他人所指出的,您看不到它,因为您吞下了异常。

此外 - 我在文档中找不到任何内容 - Saved 属性在更改属性时未重置,因此文件未更改。

这是正确的代码:

msoPropertyTypeBoolean = 0
msoPropertyTypeDate = 1
msoPropertyTypeFloat = 2
msoPropertyTypeNumber = 3
msoPropertyTypeString = 4

import win32com.client

MSWord = win32com.client.Dispatch("Word.Application")
MSWord.Visible = False

doc = MSWord.Documents.Open(file)
csp = doc.CustomDocumentProperties
csp.Add('Some Property', False, msoPropertyTypeString, 'Some New Value')
doc.Saved = False
doc.Save()
doc.Close()

MSWord.Quit()

注意:没有错误处理,绝对不是生产质量,但应该足够你实现你的功能了。
最后,我猜测属性类型的值(对于字符串类型,猜测是正确的)但对于其他类型可能存在一些问题。

关于python - 为什么保存 MSWord 文档会悄无声息地失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1340950/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com