C# 保存活动文档的副本,但包括跟踪更改
我正在开发Word 2010插件,我想将带有跟踪更改()的活动文档复制为XML格式,然后将其发送到其他地方 这是我的代码:C# 保存活动文档的副本,但包括跟踪更改,c#,ms-office,C#,Ms Office,我正在开发Word 2010插件,我想将带有跟踪更改()的活动文档复制为XML格式,然后将其发送到其他地方 这是我的代码: Microsoft.Office.Interop.Word.Document documentNew = new Microsoft.Office.Interop.Word.Document(); object missing = Type.Missing; document.Range(ref missing, ref missing).Copy(); document
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);
}