我一直在开发一个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对象中,但我怎么知道要选择哪一个?
我真的很感激任何意见,因为截至目前我不知道该怎么做。
答案 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
,我做了。