几年来,这几行代码在我们的应用程序中运行得很愉快(以及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中直接编辑文档,而不会出现任何问题。
发布于 2013-07-11 13:17:20
在绝望中,拖网搜索答案,甚至在博客文章和讨论中,远离这一特定错误,看来Office 2013的默认处理方式已经发生了变化。
引入w.ActiveWindow.View.ReadingLayout = False似乎解决了我们的问题。
发布于 2014-03-11 16:33:41
我们有一些C#自动化,它在Word 2007/2010中运行得很好,但是停止了Word 2013,并说了同样的“你不允许.”警告。
以下有关此站点的步骤解决了这个问题。
基本上有两个设置需要检查:
发布于 2014-04-04 14:11:10
您没有指定如何打开文档,但是通过遵循这个问题上接受的答案解决了一个问题。
从WordApplication.Documents.Open()切换到WordApplication.Documents.Add()解决了我的应用程序的问题。
https://stackoverflow.com/questions/17594211
复制相似问题