【发布时间】:2021-12-30 15:31:21
【问题描述】:
我正在通过 excel vba 幻灯片进行操作。我创建了形状(“矩形”、“文本框”),但很难找到合适的索引号来进一步操作它们。我知道我可以通过 Slides(1).Shapes(i) 索引号来触摸它们,因为我从零开始创建 ppt 幻灯片。但我想在创建后立即操作它们。在 Paste 方法中,我发现我可以编写代码 Paste.Select 然后 ActiveWindow.Selection 给我形状。但是我不能用 AddShapes(msoRectangle...)Select 来做到这一点。这就是为什么我想将幻灯片中的所有对象名称带到一个数组列表中,然后使用 Rectangle、TextBox 等单词在该数组中逐步搜索以查看它们。 出于我的好奇心,ArrayList.Contains“TextBox”给出“False”,即使有名为“TextBox 1”的形状。我知道如果我会写“TextBox 1”,它会带来真正的价值。但我需要通过宏来查找(什么:,LookIn),或者像“TextBox *”......我还使用了数组的过滤方法,我也取了另一个数组中的值,但它给出了TypeMismatch 13错误。
Dim shpNameArr As Object
Set shpNameArr = CreateObject("System.Collections.ArrayList")
For each Item in .Slides(1).Shapes
shpNameArr.Add Item.Name
Next
For Each Item in shpNameArr
MsgBox Item
Next
For Each Item in shpNameArr
MsgBox shpNameArr.Contains("TextBox")
shpNameArrW = Filter(Item,"TextBox")
MsgBox shpNameArrW
Next
【问题讨论】:
-
Shapes.AddShape()返回您刚刚添加的形状,因此您可以直接使用它,而无需搜索幻灯片上的形状。 docs.microsoft.com/en-us/office/vba/api/… -
.Slides(1).AddShape(msoRect...) ……你的意思是这样吗?能不能直接写代码或者如何使用呢?