【问题标题】:Saving read only Word document throws COMException in VSTO保存只读 Word 文档会在 VSTO 中引发 COMException
【发布时间】:2012-10-24 18:51:38
【问题描述】:

在我的 Word 插件中打开 Word 文档时,我会验证该文档。验证需要保存文档,所以我调用了 save 方法:

Microsoft.Office.Tools.Word.Document.Save()

如果文档是只读的(我的用例是从 Outlook 打开附加文档),则另存为对话框打开。如果我保存文档或点击取消,两种情况都会引发 COMException,并显示消息“此文件是只读的。(文件名。)”。

通常,对于 Cancel 会引发用户取消 COMException,如果文件保存正确,我希望不会引发异常。这是一个错误还是我需要以不同的方式处理文件?

【问题讨论】:

    标签: c# ms-word vsto add-in comexception


    【解决方案1】:

    您可以做两件事来避免所描述的行为(至少对我很有效)。首先,您应该为其使用另存为功能:document.SaveAs("/MyDocuments/example.doc")。您还可以“强制”应用程序在没有任何对话框的情况下保存文档,您可以通过使用 Document.Application.DiplayAlerts = False 来实现。然后,您只需在保存后启用警报。

    希望这会对你有所帮助。

    【讨论】:

    • 我尝试了DisplayAlerts = WdAlertLevel.wdAlertsNonewdAlertsMessageBox(它不是布尔值),但这并没有阻止“另存为”对话框打开(我不想这样做)和 COMException仍然被抛出。该文档从未在本地保存,因此“另存为”对话框将始终打开。我还没有尝试过您的第二个建议,即我自己明确调用.SaveAs2(...),但这确实没有多大意义。我必须决定为用户保存文档的位置(临时目录?),然后用户必须足够聪明才能知道它的保存位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多