"You are not allowed to edit this selection because it is protected."但仅从 Office 2013 开始?



这几行代码已经在我们的应用程序中愉快地运行了好几年(以及Office、2003、2007、2010等的几个版本)。目的是在Word文档中执行一种邮件合并,用数据库中的名称、地址等替换字段占位符:

    Dim w As Word.Application
    Dim d As Microsoft.Office.Interop.Word.Document = Nothing

    Dim f As Microsoft.Office.Interop.Word.Field
    For Each f In d.Fields
        f.Select()
        If fieldName = w.Selection.Text Then
            f.Result.Text = value
        End If
    Next

但是,运行Office 2013的用户在线路f.Result.Text = value:上报告了此错误

System.Runtime.InteropServices.COMException(0x800A17EC):您不是允许编辑此选择,因为它受到保护。

因此,只有当用户运行Office 2013时才会发生这种情况,而且很少有关于此错误的在线帮助。

文档的任何部分都不受保护,用户可以直接在Word中编辑文档,而不会出现任何问题。

在绝望中,甚至在博客文章和讨论中搜索答案,与这个特定的错误相距甚远,Office 2013似乎对ReadingLayout的默认处理方式进行了更改。

引入w.ActiveWindow.View.ReadingLayout = False似乎解决了我们的问题。

我们在Word 2007/2010中进行了一些C#自动化,但在Word 2013中停止了,并发出了相同的"不允许…"警告。

此网站上的以下步骤解决了此问题。

基本上有两种设置需要检查:

  • 文件–选项–常规。取消选中"在阅读视图中打开电子邮件附件和其他不可编辑的文件"
  • 文件–选项–信任中心–信任中心设置。选择"受保护的视图",然后清除所有复选框

您没有指定如何打开文档,但我遇到的一个问题通过遵循这个问题的答案得到了解决。

WordApplication.Documents.Open()切换到WordApplication.Documents.Add()解决了我的应用程序的问题。

在我的案例中,此错误是由.LockContentControl == true的内容控件引起的。

为了解决这个问题,我构建了一个内容控件的IEnumerable<ContentControl>,该属性设置为true,并设置了.LockContentControl = false。现在我可以毫无问题地.InsertColumnsRight()了。然后,我为集合中的所有内容控件恢复.LockContentControl = true

尝试了上面的大多数建议,但我发现这解决了问题。我们使用密码以只读方式打开文档作为模板。所以无法使用"添加"

Documents.Open(strTemplateDoc, ReadOnly:=True, PasswordDocument:=strDocPassword, Visible:=False)

将View.Type设置为wdNormalView停止了错误"您不允许编辑此选择,因为它受到保护"

wdDocPage.ActiveWindow.View.Type = Microsoft.Office.Interop.Word.WdViewType.wdNormalView

感谢所有其他人的建议,他们帮了很多忙。

在过去的两天里(在创建dotm模板时),这种情况一直发生在我身上,对我来说,修复它的是创建一个新的normal.dotx!不知道这是否对其他人有效,但对我有效!

打开文档时,指定不应将其作为只读打开

object readOnly = false; 
doc = word.Documents.Open(ref path, ref miss, ref readOnly, ...);

对我来说,这个问题类似于Tim Dols的回答,但我需要解锁内容控件的内容。,即CCD_ 11性质: mycontentcontrol.LockContents = False

对于@CrazyIvan1974,该解决方案的问题在于Add创建了一个新文档。如果在使用"添加"时指向现有文档,它不会加载文档,而是使用原始文档作为模板创建新文档。这可能会断开模板和加载项的连接,如果你在原始上保存,那真的会让你很麻烦

相关内容

  • 没有找到相关文章

最新更新