C#获取已打开Word文档的列表

7

目前,我正在使用此代码获取已打开的MS Word文档列表:

List<string> doc_list = new List<string>();
try
{
    Microsoft.Office.Interop.Word.Application WordObj;
    WordObj = (Microsoft.Office.Interop.Word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");
    for (int i = 0; i < WordObj.Windows.Count; i++)
    {
        object idx = i + 1;
        Window WinObj = WordObj.Windows.get_Item(ref idx);
        doc_list.Add(WinObj.Document.FullName);
    }
}
catch
{
    // No documents opened
}

如果文档是通过双击打开的,即“直接”打开,它可以正确工作。

然而,我注意到如果我从C#代码直接打开MS Word文档,例如:

Microsoft.Office.Interop.Word.Application word_app = new Microsoft.Office.Interop.Word.Application();

object inputFile = selected_doc;    // "selected_doc" contains the document name
object confirmConversions = false;
object readOnly = false;
object visible = true;
object missing = Type.Missing;

Document doc = word_app.Documents.Open(
    ref inputFile, ref confirmConversions, ref readOnly, ref missing,
    ref missing, ref missing, ref missing, ref missing,
    ref missing, ref missing, ref missing, ref visible,
    ref missing, ref missing, ref missing, ref missing);

以这种方式打开的任何文档都不会被初始代码找到,但我需要检测它。为什么会找不到?我该如何修改代码,使从C#打开的文档能够被找到?

1个回答

5
在第一个代码中,您可以获取打开的Word实例中已打开文档的列表。
Microsoft.Office.Interop.Word.Application WordObj;
WordObj = (Microsoft.Office.Interop.Word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");

在代码的第二部分中,您将使用 New Word 实例创建一个新文档。

Microsoft.Office.Interop.Word.Application word_app = new Microsoft.Office.Interop.Word.Application();

因此,这两个 Word 实例不能打开并列出文件。

如果您希望第一种方法能够获取文件,则可以尝试从 当前 Word 实例中打开该文件:

Microsoft.Office.Interop.Word.Application word_app;
word_app = (Microsoft.Office.Interop.Word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application")

object inputFile = selected_doc;    // "selected_doc" contains the document name
object confirmConversions = false;
object readOnly = false;
object visible = true;
object missing = Type.Missing;

Document doc = word_app.Documents.Open(
    ref inputFile, ref confirmConversions, ref readOnly, ref missing,
    ref missing, ref missing, ref missing, ref missing,
    ref missing, ref missing, ref missing, ref visible,
    ref missing, ref missing, ref missing, ref missing);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接