"Вы не можете редактировать этот выбор, потому что он защищен". а только с 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.

8 ответов

Решение

В отчаянии, перелистывая ответы даже в сообщениях блогов и дискуссиях, далеких от этой конкретной ошибки, кажется, что в Office 2013 произошли изменения по умолчанию для режима ReadingLayout.

Представляем линию w.ActiveWindow.View.ReadingLayout = False кажется, решил нашу проблему.

У нас была некоторая автоматизация C#, которая отлично работала с Word 2007/2010, но остановилась на 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

Спасибо всем остальным за их предложения - они очень помогли.

При открытии документа укажите, что его нельзя открывать только для чтения.

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

Это происходило со мной в течение последних двух дней (при создании шаблона dotm), и что для меня исправило, так это создание нового normal.dotx! Не знаю, сработает ли это для других или нет, но это сработало для меня!

Для меня проблема была похожа на ответ Тима Долса, но мне нужно было разблокировать содержимое элемента управления контентом. LockContents имущество: mycontentcontrol.LockContents = False

Для @CrazyIvan1974 проблема с этим решением заключается в том, что Add создает новый документ. если вы указываете на существующий документ при использовании Добавить, он не загружает документ, он создает новый документ, используя оригинал в качестве шаблона. Это может привести к отключению шаблонов и надстроек.

Другие вопросы по тегам