保存活动文档的副本,但包括跟踪更改

本文关键字:包括 跟踪 活动 文档 副本 保存 | 更新日期: 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);
}