如何操作以只读模式打开的 Word 2013 文档
本文关键字:Word 文档 2013 模式 只读 何操作 操作 | 更新日期: 2023-09-27 17:56:41
我必须以只读模式打开Word文档以进行自动化。然后,我必须从该文档中删除某些页面,涉及用户在程序用户界面中所做的某些配置。
操作确实适用于页脚和页眉,但此特定代码不起作用。它中断并显示错误 System.Runtime.InteropServices.COMException (0x800A11FD): 此方法或属性不可用,因为此命令不可用于读取。 执行此代码时:
int num = objWordDoc.ComputeStatistics(stat, ref missing);
int[] a = { 1,3,5};
for (int i = 0; i < a.Length; i++)
{
object page_num = a[i];
objWordDoc.Application.Selection.GoTo(Word.WdGoToItem.wdGoToPage,
Word.WdGoToDirection.wdGoToAbsolute, num, page_num);
objWordDoc.Application.Selection.Bookmarks[@"'Page"].Select();
objWordDoc.Application.Selection.Delete();
}
在调用 Selection.Goto 的行中。此代码取自如何动态删除 Word 文档中的页面。
当用户遵循 http://myitforum.com/myitforumwp/2013/06/10/disable-reading-mode-and-protected-view-in-word-2013/中所述的过程时,使用文档确实有效。主要是必须禁用一个设置:禁用阅读视图。转到文件 – 选项 – 常规。 取消选中"在阅读视图中打开电子邮件附件和其他不可编辑的文件"
这似乎只对Word 2013是必需的,因为Word 2010工作正常。是否可以以编程方式强制编辑模式,而无需让用户定义这些设置?
---更新---
使用此方法的原因:
- 如果多个程序尝试访问同一文档,则必须以只读模式打开 Office 文档。否则,word会引发一个消息框,试图澄清谁是允许编辑文档的人。
- 实际上此过程在Word 2010中工作正常
- 以只读模式打开并不意味着文档的编辑被锁定,它确实意味着文档必须以不同的名称/位置保存,而编辑是完全可能的。Word 2013 似乎更改了此行为。
关闭阅读模式,你需要把它放在代码的开头Globals.ThisAddIn.Application.Options.AllowReadingMode = false;
由于循环的方向,您可能会收到错误。您的第一页是第 1 页,一旦您删除它,第 2 页就会变成第 1 页等
如果反转此操作并首先删除最后一页,则它将删除正确的页面。
public void TestCallBack1(Office.IRibbonControl control)
{
Globals.ThisAddIn.Application.Options.AllowReadingMode = false;
//"S:'Test doc.docx"
Word.Document doc = Globals.ThisAddIn.Application.Documents.Open("S:''Test doc.docx",Type.Missing,true);
int num = doc.ComputeStatistics(Word.WdStatistic.wdStatisticPages, Type.Missing);
int[] a = { 5, 3, 1 };
for (int i = 0; i < a.Length; i++)
{
object page_num = a[i];
Globals.ThisAddIn.Application.Selection.GoTo(Word.WdGoToItem.wdGoToPage, Word.WdGoToDirection.wdGoToAbsolute, num, page_num);
Globals.ThisAddIn.Application.Selection.Bookmarks[@"'Page"].Select();
Globals.ThisAddIn.Application.Selection.Delete();
}
Globals.ThisAddIn.Application.Options.AllowReadingMode = true;
}
希望这有帮助。我上面的示例来自应用程序级加载项。我已经在 2013 年对其进行了测试,它似乎可以工作