2017-08-02 53 views
0

我一直在开发Word-AddIn(Office 365版本1706,Windows 10),它基本上将数据存储在图表中,以便它们可以从我们的servelets提供更新的数据,最终图表会使用它所需的所有数据更新本身。当Word中图表的布局更改时,InlineShapes消失。他们去哪里?

当我改变从默认“符合文本”“随着文字环绕”的图表布局选项有彼此相邻,例如多个图表这工作完全正常EXCEPT

这是如何工作的,只要你不改变布局选项,就是通过访问Microsoft.Office.Interop.Word.Application COM对象,它有一个Selection对象,它还有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对象的整个考验。
此外,如果您不篡改图表的布局选项,但是只要布局已被更改为说“背后的文本”,我就无法在任何InlineShape中找到该图表。

有没有人遇到过这个?
我梳理了Application.Selection对象,找不到任何东西。
但是,InlineShape仍然在Application.InlineShapes对象本身中,但我怎么知道哪一个被选中?

我真的很感激任何输入,因为到目前为止我不知道该怎么做了。

回答

0

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

这个岗位#1帮我: How to check which shapes/objects are selected/active?

更多细节什么解决我的问题:

有一次,我改变了布局选项(参见原来的问题),我将无法找到如图表InlineShapes了。
相反,它们将被列在Selection.ShapeRange.get_Item(i)下(我检查了Shapes/InlineShapes,所以我没有看到图表可能会出现的项目)。

现在,您可以将它们转换为InlineShapes,它完全符合Word中的要求,也可以将其转换为您不想要的形状,或将该形状转换为我所做的VSTO.WordChart