访问 Word Shape.Type 会抛出 COMException(HRESULT:0x80004005 E_FAIL)

问题描述 投票:0回答:1

我正在使用一个 C# 程序,该程序必须解析 Microsoft Word 文档的文本框和其他内容。为此,我使用 Microsoft.Office.Interop.Word 库。但是,当我尝试按类型过滤形状,特别是查找文本框时,我收到 COMException。

导致问题的代码行如下:

var textBoxContents = doc.Shapes.Cast<Word.Shape>()
                .Where(shape =>
                {
                    try
                    {
                        return shape.Type == Microsoft.Office.Core.MsoShapeType.msoTextBox;
                    }
                    catch (System.Runtime.InteropServices.COMException)
                    {
                        // Skip this shape if an exception occurs while accessing its Type property
                        return false;
                    }
                })
                .Select(shape => shape.TextFrame.TextRange)
                .ToList();

当执行 shape.Type == Microsoft.Office.Core.MsoShapeType.msoTextBox 行时,抛出以下异常:

System.Runtime.InteropServices.COMException: 'Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))'

为了处理错误并避免有问题的形状,我添加了一个 try-catch 块,但这似乎并没有解决问题。

是否有其他人遇到此问题?如果有,我如何正确访问 Shape.Type 属性而不会遇到此异常?有没有解决方案或更好的方法来使用 Microsoft.Office.Interop.Word 库从 Word 文档中提取文本框?

如果有任何帮助,我将非常感激。

c# ms-office office-interop comexception
1个回答
0
投票

我不想劫持这篇文章,但对于其他偶然发现这个问题的人,我建议查看我的 SO 帖子,其中有这个问题的解决方案: C# VSTO |在 Office365 中启用 ModernComments 时,尝试访问任何形状的属性时,Word 会崩溃

© www.soinside.com 2019 - 2024. All rights reserved.