微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Microsoft.office.interop.word.documents获取的打开文档列表不完整

如何解决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 举报,一经查实,本站将立刻删除。