保存活动文档的副本,但包括跟踪更改
本文关键字:包括 跟踪 活动 文档 副本 保存 | 更新日期: 2023-09-27 18:16:50
我正在制作Word 2010插件,我想将活动文档与跟踪更改(http://office.microsoft.com/en-001/word-help/turn-track-changes-on-or-off-HA010370561.aspx)复制到XML格式,然后将其发送到其他地方。
这是我的代码:
Microsoft.Office.Interop.Word.Document documentNew = new Microsoft.Office.Interop.Word.Document();
object missing = Type.Missing;
document.Range(ref missing, ref missing).Copy();
documentNew.Range(ref missing, ref missing).PasteAndFormat(Microsoft.Office.Interop.Word.WdRecoveryType.wdFormatOriginalFormatting);
Object xmlFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatXML;
documentNew.SaveAs2(file, xmlFormat);
这可以工作,但不包括跟踪重复文档中的更改。有人知道如何包含更改吗?
不如先将文档保存为XML格式的新文档,然后打开新文档并进行所需的更改?我已经测试了这种方法,它保留了跟踪的更改,而不需要做任何特别的事情。
复制粘贴到新文档中不能保留原来跟踪的更改。
所以代码应该是:
public static void SaveAsXMLAndDoSomethingElse() {
String fn = @"C:'Users'zbook'Desktop'Track test.docx";
String fn_xml = @"C:'Users'zbook'Desktop'Track test3.xml";
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Documents docs = app.Documents;
Document doc = docs.Open(fn, ReadOnly:true);
//bool b = doc.TrackFormatting; // for some reason this line bombs
doc.SaveAs2(fn_xml, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatXML);
doc.Close(false);
Marshal.ReleaseComObject(doc);
// now open up fn_xml ... and do whatever
app.Quit(false);
Marshal.ReleaseComObject(docs);
Marshal.ReleaseComObject(app);
}