13

これらの数行のコードは、数年間、アプリケーションで問題なく実行されてきました (そして、いくつかのバージョンの 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 で直接ドキュメントを編集できます。

4

8 に答える 8

22

Office 2013 で ReadingLayout の既定の処理が変更されたようです。

このラインの導入により、w.ActiveWindow.View.ReadingLayout = False私たちの問題は解決したようです。

于 2013-07-11T13:17:20.910 に答える
4

Word 2007/2010 では問題なく動作する C# 自動化がいくつかありましたが、Word 2013 では同じ「許可されていません...」という警告で停止しました。

このサイトの次の手順で問題が解決しました。

基本的に、確認する設定は 2 つあります。

  • ファイル – オプション – 一般。「電子メールの添付ファイルやその他の編集不可能なファイルを閲覧表示で開く」のチェックを外します</li>
  • ファイル – オプション – セキュリティ センター – セキュリティ センターの設定。[保護されたビュー] を選択し、すべてのチェックボックスをオフにします。
于 2014-03-11T16:33:41.207 に答える
3

ドキュメントを開く方法は指定されていませんが、この質問で受け入れられた回答に従うことで、私が抱えていた問題が解決されました。

WordApplication.Documents.Open()からに切り替えるWordApplication.Documents.Add()と、アプリケーションの問題が解決しました。

于 2014-04-04T14:11:10.263 に答える
2

上記の提案のほとんどを試しましたが、これで問題が解決したことがわかりました。パスワードを使用して読み取り専用でドキュメントをテンプレートとして開いていました。そのため、「追加」を使用できませんでした

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

View.Type を wdNormalView に設定すると、「保護されているため、この選択を編集することはできません」というエラーが停止しました

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

提案してくれた他のすべての人に感謝します-彼らは大いに役立ちました。

于 2018-07-25T09:25:47.110 に答える
0

これは過去 2 日間 (dotm テンプレートの作成中に) 発生しており、新しい normal.dotx! を作成することで解決しました。それが他の人にとってうまくいくかどうかはわかりませんが、私にとってはうまくいきました!

于 2015-04-03T17:26:08.677 に答える
0

ドキュメントを開くときに、読み取り専用で開かないように指定する

object readOnly = false; 
doc = word.Documents.Open(ref path, ref miss, ref readOnly, ...);
于 2016-07-19T11:07:30.423 に答える