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