我有一个从互联网上下载的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
保护,密码为"密码"。
答案 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");
}