如何解决Microsoft.office.interop.word.documents获取的打开文档列表不完整
我在工作中使用互操作单词,在开始主要操作之前,我需要关闭几个单词文件,这是因为我需要将它们与服务器上的副本进行比较,并在需要时进行更新。要检查文件是否打开,我使用Marshal.GetActiveObject将应用程序附加到word,然后关闭文件而不保存。当文件被一个一个地打开时,这工作正常。如果一次打开多个文件,即在Windows资源管理器中选择它们并按回车键,则会出现错误。我已经将这些错误跟踪到Word.Documents界面无法正确获取文档列表。
在我的示例中,文件夹中有4个文档。如果我一一打开它们,下面的代码将返回4,但是如果我在文件夹中选择3或4个文件并单击return,它们将全部打开,但是代码将返回2。这有什么用?我该如何解决?
using System;
using System.Linq;
using System.Reflection;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Word = Microsoft.Office.Interop.Word;
namespace TestAppForStackOverflow
{
class Program
{
static void Main(string[] args)
{
object misValue = Missing.Value;
object doNotSave = Word.WdSaveOptions.wdDoNotSaveChanges;
Word.Application wordApp;
bool isWordOpen = Process.GetProcessesByName("winword").Any();
if (isWordOpen)
{
try { wordApp = (Word.Application)Marshal.GetActiveObject("Word.Application"); }
catch (COMException) { wordApp = new Word.Application(); }
Word.Documents documents = wordApp.Documents;
Console.WriteLine("Number of word documents open: " + documents.Count.ToString());
}
else { wordApp = new Word.Application(); }
string q = Console.ReadLine();
if (q == "q") wordApp.Quit(ref doNotSave,ref misValue,ref misValue);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。