当Word中的图表布局更改时,InlineShapes消失。他们去哪里?

时间:2017-08-02 08:28:06

标签: c# charts ms-word ms-office vsto

我一直在开发一个Word-AddIn(Office 365版本1706,Windows 10),它基本上将数据存储在图表中,这样就可以从我们的服务器中提供更新的数据,最终图表会自动更新所需的所有数据。

当我从默认“与文本一致”“使用文字环绕”更改图表的布局选项时,这非常正常 EXCEPT < / em>例如,彼此相邻的多个图表。

如果不改变布局选项,这是如何工作的,方法是访问具有Selection对象的Microsoft.Office.Interop.Word.Application COM对象,该对象还具有InlineShapes,如下所示:

var inlineShapes = Application.Selection.InlineShapes;
if(inlineShapes > 0)
{
    for(var i = 1; i < inlineShapes.Count + 1; i++)
    {
        if (inlShape.HasChart == MsoTriState.msoTrue)
            return new WordChart(inlShape);
    }
}

为了简单起见,我免除了处理COM对象的整个考验 同样,如果你不篡改图表的布局选项,这是有效的,但是一旦布局被改变为说“Behind Text”我就无法在任何InlineShape中找到该图表

以前有没有人经历过这个? 我已经梳理了Application.Selection对象,找不到任何东西 但是InlineShape仍然在Application.InlineShapes对象中,但我怎么知道要选择哪一个?

我真的很感激任何意见,因为截至目前我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

好的,我终于找到了那些小图表!

这篇Stackoverflow帖子帮助我: How to check which shapes/objects are selected/active?

解决我问题的更多细节:

一旦我更改了布局选项(请参阅原始问题),我将无法再找到图表作为InlineShapes。
相反,它们将列在Selection.ShapeRange.get_Item(i)下(我检查了Shapes / InlineShapes,因此我没有看到图表可能是什么项目。)

现在你可以将它们转换为InlineShapes,它也可以在Word中转换为你不想要的,或者将那个Shape转换为VSTO.WordChart,我做了。