VBA:搜索形状时需要运行时错误'424'对象

问题描述 投票:0回答:1

我创建了一个VBA脚本,用于将数据从Excel传输到PowerPoint(均为2016版),并希望检查幻灯片x上是否存在特定的形状,然后将其复制到幻灯片y。

[(C0])中也提到的通用解决方案确实产生了>>

“运行时错误'424':必需对象”

Existence of shapes in Powerpoint的功能的第3行中>

For Each oSh in myPresentation.Slides(4).Shape

称为“ ShapeExists”的代码:

Function ShapeExists(ByVal ShapeName as String) as Boolean
   Dim oSh as Shape
   For Each oSh in myPresentation.Slides(4).Shapes
     If oSh.Name = ShapeName Then
        ShapeExists = True
        Exit Function
     End If
   Next
End Function

我已经在参考文献和其他参考文献中添加了Powerpoint 2016对象库。键入 If ShapeExists("MSDreieck2") Then myPresentation.Slides(4).Shapes("MSDreieck2").Copy mySlide5.Shapes.PasteSpecial DataType:=0 Else GoTo NACHZEITSTRAHLCOPY: End If 时,它会建议列表中包含两个不同的“形状”项(一个用于Excel,一个用于PP),但对于我使用的错误没有影响。

就我而言,由于在每次运行时都会重新分配Shape索引,并且在我的情况下Slide x上Shape的数量并不总是相同,因此没有其他方法可以检查特定的Shape是否存在。] >

我将非常感谢每个建议。谢谢

我创建了一个VBA脚本,用于将数据从Excel传输到PowerPoint(均为2016版),并希望检查幻灯片x上是否存在特定的形状,然后将其复制到幻灯片y。常见解决方案...

由于它在Excel和Powerpoint中都可用,请通过明确声明它来避免混淆代码:)

dim oSh as Shape

Dim oSh As PowerPoint.Shape

如果未显式声明它,则它将引用本机应用程序中的对象,在本例中为Excel。 Dim oSh As Object 执行后期绑定,让应用程序在运行时决定。

excel vba powerpoint shapes
1个回答
0
投票

由于它在Excel和Powerpoint中都可用,请通过明确声明它来避免混淆代码:)

© www.soinside.com 2019 - 2024. All rights reserved.