【问题标题】:VBA Word : SmartArts and rangeVBA Word:SmartArts 和范围
【发布时间】:2015-09-02 14:52:41
【问题描述】:

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

这是我的 SmartArt。
准确的说SmartArtLayout就是Application.SmartArtLayouts(88)

我已经可以做什么了:

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

现在我被阻止了。 我想找到一种在 DB 和 SmartArt 中编辑/删除特定节点的方法。
如果我创建一个用户窗体,将每个形状文本放在一个下拉列表中,然后循环所有形状以找到其中包含所选文本的形状,这将是可能的。

如果没有人回答,那可能就是我要做的。
但我觉得这种方式既不自然也不实用。

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

'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

但这太容易了……形状似乎没有范围。

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

敬上,

【问题讨论】:

    标签: vba ms-word shapes


    【解决方案1】:

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

    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,但我无法做到完美,但我在添加替代文本时将 id 分配给替代文本,我可以找到任何节点

    2.1) 剪切时

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

    2.2) 检查搜索时

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

    图片会显示alt存储的位置

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

    【讨论】:

    • 哇,我多年来一直在寻找这个属性替代文本!现在我终于可以比较两个节点并进行大量验证了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2021-01-05
    • 2021-06-20
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    相关资源
    最近更新 更多