默认情况下,在编辑模式下使用VSTO打开下载的Word文档

时间:2015-03-26 17:47:40

标签: c# ms-word vsto

我有一个从互联网上下载的word文档,我想在应用程序级外接程序中执行某些操作。这些操作(文档搜索,取消保护文档等)要求文档在打开时处于编辑模式。以下是一些示例代码,用于说明我的需求:

private void ThisAddIn_Startup(object sender, EventArgs e)
{
    Application.DocumentOpen += application_DocumentOpen;
}

private void application_DocumentOpen(Document doc)
{
    if (doc.ProtectionType != WdProtectionType.wdNoProtection)
    {
        // this throws a COMException if the document is opened in read-only mode
        doc.Unprotect("password");
    }

    // ...
}

由于此加载项将分发给多个用户,因此我无法假设用户将设置任何应用程序属性,例如默认情况下以编辑模式打开下载的文档,因此在代码中执行此操作将是理想的。考虑到我的约束,是否有一些方法可以使用VSTO或互操作库来实现这一目的?谢谢你的帮助。

编辑:我的应用程序级加载项已经过测试,安装在Word 2013上,并使用VS 2013,VSTO 4.0创建。

显示必要特征can be found here的示例文档。该文档受WdProtectionType.wdAllowOnlyFormFields保护,密码为"密码"。

1 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的Word / VSTO。

我使用Word 2013(64位)和VSTO 4.0 / Visual Studio 2013尝试了这一点,并且在偶数处理函数“application_DocumentOpen”中没有得到任何异常。对于只读和受保护的文档。

修改: 在取消保护文档之前,尝试将视图更改为“打印视图”。

if (doc.ProtectionType != Word.WdProtectionType.wdNoProtection)
{
doc.ActiveWindow.View.Type = Word.WdViewType.wdPrintView; 
doc.Unprotect("password"); 
} 

参考:http://answers.microsoft.com/en-us/office/forum/office_2013_release-word/not-available-for-reading-error-on-unprotecting-a/a888701b-d70a-4dbc-a1ec-68b8bad80848