haw*_*bsl 10 .net office-interop word-2013
几年来,我们已经在我们的应用程序中快速运行了这几行代码(以及Office,2003,2007和2010等多个版本).目的是在Word文档中执行一种邮件合并,用数据库中的名称,地址等替换字段占位符:
Dim w As Word.Application
Dim d As Microsoft.Office.Interop.Word.Document = Nothing
Run Code Online (Sandbox Code Playgroud)
...
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
Run Code Online (Sandbox Code Playgroud)
但是,运行Office 2013的用户在该行上报告此错误f.Result.Text = value:
System.Runtime.InteropServices.COMException(0x800A17EC):您不能编辑此选择,因为它受到保护.
因此,这仅在用户运行Office 2013时才会发生,并且此错误的联机帮助很少.
文档的任何部分都不受保护,用户可以直接在Word中编辑文档而不会出现任何问题.
haw*_*bsl 20
无奈之下,甚至在博客文章和远离此特定错误的讨论中搜索答案,似乎Office 2013中的更改是对ReadingLayout的默认处理.
引入该线w.ActiveWindow.View.ReadingLayout = False似乎已经解决了我们的问题.
| 归档时间: |
|
| 查看次数: |
11773 次 |
| 最近记录: |