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

hawbsl picture hawbsl · Jul 11, 2013 · Viewed 14.4k times · Source

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.

Answer

hawbsl picture hawbsl · Jul 11, 2013

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.