microsoft.office.interop.word文档操作会影响同一应用程序中的其他文档

时间:2017-09-07 08:09:55

标签: c# ms-word

我在我的应用程序中创建了一个Word文档列表。然后我为每个文件打电话保护。似乎以前调用的所有文档都受到以下代码的影响。

// create document list use same application    
List<Word.Document> docList = somemethod();

// do some operation for each document, e.g. protect
doclist.foreach(d=>{d.protect(...); d.save();})

...//quit the application

我发现最后一个文件没问题,但其他文件受到影响,Microsoft Word控件不像EDraw那样在办公室ActiveX控件中显示边框。

当我更改下面的代码时,问题就消失了:

// create document list use same application
List<Word.Document> docList = somemethod(); 
doclist.foreach(d=>
{
    string filepath = d.fullname;
    d.close();
    var newDoc = wordApp.Documents.Open(....);
    newdoc.protect(...);
    newdoc.save();
});

// do some operation for each document, e.g. protect

...//quit the application

为什么?

在这里附上一些方法代码

List<Word.Document> somemethod (Word.Application wordApp)
{
...//define filename
List<Word.Document> desWordDocList = new List<Word.Document>(); 

...// in foreach
foreach (....)
{
    Microsoft.Office.Interop.Word.Document newDoc = wordApp.Documents.Add();
    newDoc.SaveAs(filePath);
        desWordDocList.Add(newDoc);
}

return desWordDocList;
}

0 个答案:

没有答案