MSWord Shape对象Microsoft.Office.Interop.Word的C#COMException读取属性

杰克

我试图遍历文档中的所有形状,并检查它们的“替代文本”,该文本已将该图像的源文件名记录为替代文本。我需要阅读特定的源图像并将其转换为其他图像格式。

我能够读懂形状的AlternateText,但它会引发异常:'(((Microsoft.Office.Interop.Word.Shape)(s))。AlternativeText'引发了类型为'System.Runtime的异常.InteropServices.COMException'

当我设置一个断点并查看“ s”对象时,大多数属性都将引发此异常,但是有些不是,例如,我可以读取LinkFormat属性,而其他一些属性则没有问题,但是大多数属性都会引发错误。

这是我正在使用的代码:

Word.Application WordApp = new Word.Application();
        d = WordApp.Documents.Open(@strFilename, ReadOnly: true, Visible: false);
        int iReplacements = 0;
        int iReplacementNoLink = 0;

        foreach (Word.Shape s in d.Shapes)
        {
            Application.DoEvents();
            try
            {
                if (s.LinkFormat.SourceName.ToString().Contains(".eps") || s.LinkFormat.SourceName.ToString().Contains(".png"))
                {
                    iReplacements++;
                }
                if (s.AlternativeText != "")
                {
                    iReplacementNoLink++;
                }

            }
            catch (Exception fff)
            {
                Console.Write(fff);
            }
        }

检查s.AlternateText的if语句始终以catch结尾。

我正在使用Visual Studio 2013,并且有Office 2007,但不确定是否相关。

谁能告诉我我需要做什么才能阅读形状的替代文本?如果我以错误的方式进行操作,还是需要包含一个库,或者是否需要升级VS或Office?似乎应该很简单。

感谢您提供的任何帮助。

杰克

我不确定为什么这样做,但是我可以通过使用形状的“选择”方法来解决此问题。选择形状后,将填充先前抛出错误的大多数属性。仍然有大约20个属性引发错误,但是我现在可以访问以前引发错误的内容,例如“ AlternativeText”,“ Name”,“ Callout”。

        Word.Application WordApp = new Word.Application();
        d = WordApp.Documents.Open(@strFilename, ReadOnly: true, Visible: false);
        int iReplacements = 0;
        int iReplacementNoLink = 0;
        foreach (Word.Shape s in d.Shapes)
        {
            Application.DoEvents();
            try
            {
                //if (s.Type == Microsoft.Office.Core.MsoShapeType.msoLinkedPicture)
                if (s.LinkFormat.SourceName.ToString().Contains(".eps") || s.LinkFormat.SourceName.ToString().Contains(".png"))
                {
                    iReplacements++;
                }
                s.Select();
                if (s.AlternativeText != "" && s.AlternativeText != null)
                {
                    iReplacementNoLink++;
                }

            }
            catch (Exception fff)
            {
                Console.Write(fff);
            }
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Microsoft.Office.Interop.Word

来自分类Dev

C#使用Microsoft.Office.Interop.Excel读取数据

来自分类Dev

使用参考C#添加Microsoft.Office.InterOp.Word

来自分类Dev

使用参考C#添加Microsoft.Office.InterOp.Word

来自分类Dev

C# Microsoft.Office.Interop.Word 保护段落

来自分类Dev

带有C#的Microsoft.Office.Interop.Word-标识现有目录对象

来自分类Dev

使用f#Microsoft.Office.Interop.Word搜索和替换

来自分类Dev

使用Microsoft.Office.Interop Word和Excel

来自分类Dev

在VBScript中使用Microsoft.Office.Interop.Word枚举常量

来自分类Dev

Microsoft.Interop.Office.Word完整样式不适用

来自分类Dev

Office 2007的Microsoft.Office.Interop.Excel

来自分类Dev

无法获得Microsoft.Office.Interop参考

来自分类Dev

如何在C#中为Microsoft.office.interop.word实现后期绑定?

来自分类Dev

C#Microsoft.Office.Interop.Word SpellingChecked不返回真实值

来自分类Dev

Microsoft.Office.Interop.Word.WdRelativeHorizontalPosition出现C#编译器错误;

来自分类Dev

如何使用 Microsoft.Office.Interop.Word 在 C# 中编辑 docx 文件

来自分类Dev

无法将类型为“ microsoft.Office.Interop.Excel.ApplicationClass”的COM对象转换为“ microsoft.Office.Interop.Excel.Application”

来自分类Dev

使用Microsoft.Office.Interop.Word启用内置的Microsoft Word按钮控件

来自分类Dev

机器中的单独Microsoft.Office.Interop.Word实例和Word应用程序

来自分类Dev

如何通过 Microsoft.Office.Interop.Word 在 wdRevisionsViewFinal 中将 word 转换为 html?

来自分类Dev

使用Microsoft.office.Interop.Excel读取Excel时性能降低

来自分类Dev

在哪里可以找到Microsoft.Office.Interop.Word.dll(2010)?

来自分类Dev

在Microsoft.Office.Interop.Word中仅可访问的第一页

来自分类Dev

Microsoft.Office.Interop.Word错误,在代码中打开文档文件

来自分类Dev

如何使用Excel.Microsoft.Office.Interop从Excel获取图表并将其添加到Word?

来自分类Dev

使用Microsoft.Office.Interop.Word查找所选单元格的索引

来自分类Dev

Microsoft.Office.Interop.Word中仅可访问的第一页

来自分类Dev

无法使用microsoft.office.interop.word在当前一字之后插入图像

来自分类Dev

将一个文档插入另一个 Microsoft.Office.Interop.Word

Related 相关文章

  1. 1

    使用Microsoft.Office.Interop.Word

  2. 2

    C#使用Microsoft.Office.Interop.Excel读取数据

  3. 3

    使用参考C#添加Microsoft.Office.InterOp.Word

  4. 4

    使用参考C#添加Microsoft.Office.InterOp.Word

  5. 5

    C# Microsoft.Office.Interop.Word 保护段落

  6. 6

    带有C#的Microsoft.Office.Interop.Word-标识现有目录对象

  7. 7

    使用f#Microsoft.Office.Interop.Word搜索和替换

  8. 8

    使用Microsoft.Office.Interop Word和Excel

  9. 9

    在VBScript中使用Microsoft.Office.Interop.Word枚举常量

  10. 10

    Microsoft.Interop.Office.Word完整样式不适用

  11. 11

    Office 2007的Microsoft.Office.Interop.Excel

  12. 12

    无法获得Microsoft.Office.Interop参考

  13. 13

    如何在C#中为Microsoft.office.interop.word实现后期绑定?

  14. 14

    C#Microsoft.Office.Interop.Word SpellingChecked不返回真实值

  15. 15

    Microsoft.Office.Interop.Word.WdRelativeHorizontalPosition出现C#编译器错误;

  16. 16

    如何使用 Microsoft.Office.Interop.Word 在 C# 中编辑 docx 文件

  17. 17

    无法将类型为“ microsoft.Office.Interop.Excel.ApplicationClass”的COM对象转换为“ microsoft.Office.Interop.Excel.Application”

  18. 18

    使用Microsoft.Office.Interop.Word启用内置的Microsoft Word按钮控件

  19. 19

    机器中的单独Microsoft.Office.Interop.Word实例和Word应用程序

  20. 20

    如何通过 Microsoft.Office.Interop.Word 在 wdRevisionsViewFinal 中将 word 转换为 html?

  21. 21

    使用Microsoft.office.Interop.Excel读取Excel时性能降低

  22. 22

    在哪里可以找到Microsoft.Office.Interop.Word.dll(2010)?

  23. 23

    在Microsoft.Office.Interop.Word中仅可访问的第一页

  24. 24

    Microsoft.Office.Interop.Word错误,在代码中打开文档文件

  25. 25

    如何使用Excel.Microsoft.Office.Interop从Excel获取图表并将其添加到Word?

  26. 26

    使用Microsoft.Office.Interop.Word查找所选单元格的索引

  27. 27

    Microsoft.Office.Interop.Word中仅可访问的第一页

  28. 28

    无法使用microsoft.office.interop.word在当前一字之后插入图像

  29. 29

    将一个文档插入另一个 Microsoft.Office.Interop.Word

热门标签

归档