gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:28:20 24 4
gpt4 key购买 nike

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

我能够读取形状的 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 语句总是在捕获中结束。

我使用的是 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);
}
}

关于MSWord Shape 对象 Microsoft.Office.Interop.Word 的 C# COMException 读取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36043690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com