【问题标题】:Access a Shape object via its ID通过其 ID 访问 Shape 对象
【发布时间】:2015-07-26 22:07:37
【问题描述】:

我有一张 PowerPoint 幻灯片,上面有 5 个形状。我想在宏中用这些形状做不同的事情。如何使用形状 ID 更改这些形状之一?例如,我有两个名称为 "Title 1" 的形状,但我想使用 ID 为 15 的形状。

这是我的代码:

Sub size_n_spread_v()

    Dim j As Integer
    Dim sld As Slide
    Dim SldId As Long
    gap = std_gap

    SldId = ActiveWindow.View.Slide.SlideIndex
    Set sld = ActivePresentation.Slides(SldId)

    Call SortMultArray

    new_dim = (total_dim - gap * (lngRow - 1)) / lngRow

    'This works but is not specific:
    'sld.Shapes.("Title 1").Height = new_dim 

    'This would hopefully be specific but the syntax does not work Please HELP!
    'sld.Shapes.("Title 1").Id(15).Height = new_dim

End Sub

有人知道通过 ID 更改形状的正确语法吗?

【问题讨论】:

    标签: vba shape powerpoint


    【解决方案1】:

    我不知道有什么方法,但是您可以编写一个简单的辅助函数,然后您可以在整个项目中使用它来让自己更轻松。这样的事情会起作用:

    Public Function GetShapeById(s As Slide, n As String, id As Long) As Shape
    
        Dim objShape As Shape
        For Each objShape In s.Shapes
            If StrComp(objShape.Name, n, vbTextCompare) = 0 And objShape.Id = id Then
                Set GetShapeById = objShape
                Exit Function
            End If
        Next
    
    End Function
    

    那么你可以像这样使用它:

    Sub size_n_spread_v()
    
        ....
    
        ' Instead of:
        sld.Shapes.("Title 1").Id(15).Height = new_dim
    
        ' Use:
        GetShapeById(sld, "Title 1", 15).Height = new_dim
    
    End Sub
    

    【讨论】:

    • 非常感谢您的回答。但我宁愿让它不那么复杂,并且真的很想以我认为它会工作的方式使用它。我仍然希望这是可能的。问题是,由于我不是很有经验,我必须将您的解决方案与我的解决方案中已经存在的许多数组函数结合起来。我不确定我是否能够做到这一点。 --> 其他人有想法吗?
    • 非常感谢。我通过遍历所有形状解决了这个问题,然后检查天气 shape.id 和我存储的 id 是否相同。
    • 很高兴听到。这基本上也是我在上面所做的。
    【解决方案2】:

    上面提到的函数是唯一通过Id获取形状的方法。您必须搜索 Shapes 集合,因为没有与 SlideIndex 等效的 ShapeIndex。查找特定形状的另一种解决方案是通过添加您自己的标签来唯一标识形状,但这是一个更复杂的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      • 2011-07-20
      • 2017-05-28
      • 1970-01-01
      • 2014-04-18
      • 2015-08-17
      • 2012-02-28
      相关资源
      最近更新 更多