【问题标题】:C# program open Word Application but not specific Word DocumentC# 程序打开 Word 应用程序但不打开特定的 Word 文档
【发布时间】:2017-09-27 15:19:09
【问题描述】:

下面的代码应该在我的 windows 目录中打开一个 .docx 文件,但不是打开该文件,而是只打开 Word 应用程序。里面没有活动的word文档,甚至没有一个新文档。我注意到文件选项卡下的“保存、另存为、打印、共享、导出和关闭”等选项都显示为灰色且处于非活动状态。

using Microsoft.Office;
using Word = Microsoft.Office.Interop.Word;

class Program
{
    static void openFile()
    {
        string myText = @"‪C:\CSharp\WordDocs\MyDoc.docx";
        var wordApp = new Word.Application();
        wordApp.Visible = true;
        wordApp.Activate();

        Word.Documents book = wordApp.Documents;
        Word.Document docOpens = book.Open(myText);
    }

    static void Main(string[] args)
    {
        //Console.WriteLine("Hello World\n");
        openFile();
    }
}

【问题讨论】:

  • 我运行了代码,它可以很好地打开我的文件。
  • openFile() 函数的最后一行是否抛出异常?我尝试了 myText 不存在的路径,在这种情况下,它确实打开了一个空的 Word 应用程序,其中没有文档,但它确实在提到的行引发了异常。
  • 文件路径可能不对。
  • 没有例外。文件路径绝对正确且文件存在。当我将文件移动到任何其他目录时,问题仍然存在。即使我将路径名更改为不存在的名称 - 它仍然会像以前一样打开 Word 应用程序而不会出错。
  • 我还查看了我在 c# 中引用的 microsoft office 对象库的版本 - 它是 15.0。我电脑上office目录下的对象库文件也是15.0。我怀疑这可能是我的 Word 的兼容性问题,但根据我的检查,情况似乎并非如此。

标签: c# ms-word interop docx


【解决方案1】:

使用不存在的路径运行代码确实会打开 Word 应用程序,但其中没有文档。但它确实抛出了一个非常有用的异常,如下所示:

System.Runtime.InteropServices.COMException: '抱歉,我们找不到 你的文件。它被移动、重命名或删除了吗? (C:\Users\nonexistantuser...\Test.docx)'

你没有在你的问题中提到这一点,但你必须得到一个例外。

所以我猜你的路径不正确。

如果路径正确,即文件存在,另一种可能的情况是没有适当的读取权限。在这种情况下,它会再次打开一个空的 Word 应用程序,但这也应该抛出一个异常,尽管是一个不同的异常:

System.Runtime.InteropServices.COMException: 'Word 无法打开文档:用户没有访问权限 (C:\Users\NS799\Desktop\Test.docx)'

所以请检查路径是否存在,如果存在,是否有适当的权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    相关资源
    最近更新 更多