"You are not allowed to edit this selection because it is protected." but only since Office 2013?
Asked Answered
P

8

13

We've had these few lines of code running happily in our applications for several years (and in several versions of Office, 2003, 2007, 2010 etc). Purpose is to perform a kind of a mail merge in a Word document, substituting the field placeholders with names, addresses etc from a database:

    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

However a user running Office 2013 reports this error on the line f.Result.Text = value:

System.Runtime.InteropServices.COMException (0x800A17EC): You are not allowed to edit this selection because it is protected.

So, this is only happening when the user is running Office 2013 and there's very little online help for this error.

No part of the document is protected, and the user can edit the document directly in Word without any problem.

Pino answered 11/7, 2013 at 13:6 Comment(0)
P
22

In desperation, trawling for answers even in blog posts and discussions far removed from this particular error it seems there's been a change in Office 2013 to the default treatment of the ReadingLayout.

Introducing the line w.ActiveWindow.View.ReadingLayout = False seems to have solved our problem.

Pino answered 11/7, 2013 at 13:17 Comment(2)
I had the same problem and your answer pointed me in the right direction. I couldn't use ReadingLayout though, I guess it was introduced in a later version, so I used w.ActiveWindow.View.Type = wdPageView instead.Convey
Also... To add do this... Be sure that there is actually an open document too.Scrimp
W
4

We had some C# automation that worked fine with Word 2007/2010, but stopped with Word 2013 with the same "You are not allowed ..." warning.

Following steps on this site solved the issue.

Basically there are two settings to check:

  • File – Options – General. Uncheck “Open E-Mail attachments and other uneditable files in reading view”
  • File – Options – Trust Center – Trust Center Settings. Select Protected View, then clear all the checkboxes.
Whaleboat answered 11/3, 2014 at 16:33 Comment(1)
+1, the "Open E-Mail attachments..." setting was the ticket for solving my Access VBA problem. Thanks for sharing.Decameter
B
3

You don't specify how the document is opened, but a problem I had was resolved by following the answer accepted on this question.

Switching from WordApplication.Documents.Open() to WordApplication.Documents.Add() resolved the issue for my application.

Brei answered 4/4, 2014 at 14:11 Comment(0)
A
2

In my case, this error was caused by the presence of content controls with .LockContentControl == true.

To work around this issue, I built an IEnumerable<ContentControl> of the content controls with this property set to true, and set .LockContentControl = false. Now I can .InsertColumnsRight() without a problem. Then I restore the .LockContentControl = true for all content controls in my collection.

Athenaathenaeum answered 15/4, 2015 at 9:21 Comment(0)
G
2

Tried most of the suggestions above but I found this fixed the problem. We were opening the doc as a template in read-only with a password. So couldn't use 'Add'

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

Setting the View.Type to wdNormalView stopped the error "You are not allowed to edit this selection because it is protected"

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

Thanks to all the others for their suggestions - they helped a lot.

Garwood answered 25/7, 2018 at 9:25 Comment(0)
G
0

This has been happening to me for the past two days (while creating a dotm template) and what fixed it for me was to create a new normal.dotx! Don't know if that will work for others or not, but it did for me!

Gertrudegertrudis answered 3/4, 2015 at 17:26 Comment(0)
C
0

When you open a document, specify that it should not be opened as read-only

object readOnly = false; 
doc = word.Documents.Open(ref path, ref miss, ref readOnly, ...);
Celik answered 19/7, 2016 at 11:7 Comment(0)
D
0

For me, the issue was similar to Tim Dols answer, but I needed to unlock the content of the content control., which is the LockContents property: mycontentcontrol.LockContents = False

For @CrazyIvan1974, the problem with that solution is that Add creates a new document. if you point at an existing document when using Add, it doesn't load the document, it creates a new document using the original as a template. That can disconnect templates and add-ins, really messing you up if you save over the original

Designer answered 5/12, 2016 at 19:38 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.