VBA Word:SmartArts和范围

时间:2015-09-02 14:52:42

标签: vba word-vba shapes

我目前正在使用Word中的SmartArts SmartArt已经存在,我想找到一种方法来从范围,Office光标(选择)或类似的东西访问SmartArt值。

这是我的SmartArt 确切地说,SmartArtLayout是Application.SmartArtLayouts(88)

SmartArt tree

我能做什么:

  • 在我的文档上创建一个SmartArt,将其保存为Shape以对其进行处理。
  • 在我的SmartArt的所有节点上循环,选择我想要保留的节点,然后将我想要保留的节点插入数据库,并附带指向其父节点的链接。

现在我被封锁了。 我想在DB和SmartArt中找到一种编辑/删除特定节点的方法 如果我创建一个将每个Shape Text放在下拉列表中的Userform,然后我循环所有形状以找到包含所选文本的形状,就有可能。

Userform

如果没有人回答,那可能就是我要做的事情。
但我不会发现这种方式自然或实用。

所以我正在寻找一种能够找到光标在其上的节点的方法。我会做那样的事情:

'Putting my SmartArt in SAShape
For Each Node In SAShape.SmartArt.AllNodes
    If (Selection.Range.InRange(Node.Range)) Then
        'my code
    End If
Next Node

但它过于简单......形状似乎没有范围。

有没有办法让Node获得焦点,或者获取我们点击的节点? 提前谢谢!

亲切地,

1 个答案:

答案 0 :(得分:0)

这不是问题,但它是任务,但我会给你一些提示来帮助你

1)获取任何级别循环中的任何节点都将是这样的

 Set oShape = ActiveSheet.Shapes(1)
For i = 1 To oShape.SmartArt.AllNodes.Count
  oShape.SmartArt.AllNodes(i).TextFrame2.TextRange.Text = "Sample " & i
Next

2)要获取用于删除或编辑的特定节点,您必须确定一个我无法做到完美的ID但是当我添加alt文本时我将id分配给alt文本我可以找到任何节点

2.1)当shearch

 nod.TextFrame2.TextRange.Text = str
 nod.Shapes(1).AlternativeText = index

2.2)检查搜索时

  If oShape.SmartArt.AllNodes(i).Shapes(1).AlternativeText = index

并且imge将显示alt store

的位置

alt text in excel

我认为会以某种方式帮助你做你需要的事情,但你必须了解项目删除后智能艺术树的变化