【问题标题】:select part of the slide in powerpoint VBA在PowerPoint VBA中选择幻灯片的一部分
【发布时间】:2016-08-23 19:28:35
【问题描述】:
有没有办法通过给出要选择的区域的坐标来从 VBA 中选择幻灯片的特定区域。 EG 我想选择一个位置为 top=100、left=100、hight=10 和 width=10 的区域,并且该区域包括 3 个文本框,我想以某种方式操作后记,比如将其中 3 个都向左对齐。
特别是,我有很多带有这 3 个盒子的幻灯片,然后还有一些其他盒子,其中这 3 个盒子的位置从一张幻灯片到另一张的变化 +/- 0.3 厘米,现在我希望它们具有相同的位置在所有幻灯片上。问题是我其中一些是空框,所以我不知道如何搜索它们然后将它们包含在选择中,因为它们在所有幻灯片上都没有相同的形状索引。因此,我想如果有代码可以选择幻灯片的特定区域 - 这几乎可以解决我的问题......
谢谢!!!
【问题讨论】:
标签:
vba
select
powerpoint
【解决方案1】:
FindShapesInSlides 代码将选择幻灯片中任何幻灯片中匹配指定边界(基于顶部、左侧、高度、宽度)的所有形状(文本框等)。
然后,您可以向所选项目添加您想要的任何操作(例如对齐它们或其他)。
选择指定边界内的所有形状(上、左、高、宽)
Sub FindShapesInSlides(pTop As Single, pLeft As Single, pHeight As Single, pWidth As Single)
Dim slideShapes As Shapes
Dim slideShape As Shape
'Loop through each slide in the presentation
For i = 1 To ActivePresentation.Slides.Count
'Get shapes for the slide
Set slideShapes = ActivePresentation.Slides(i).Shapes
'Remove any existing selection
ActiveWindow.Selection.Unselect
'Loop through the shapes
For Each slideShape In slideShapes
'Check if shape is within the specified boundary
If ((slideShape.top >= pTop And slideShape.top <= (pTop + pHeight)) _
And (slideShape.left >= pLeft And slideShape.left <= (pLeft + pWidth))) Then
'Add the shape to the current selection
slideShape.Select (msoFalse)
End If
Next slideShape
Next i
End Sub
测试选择
Sub Test()
FindShapesInSlides pTop:=50, pLeft:=50, pHeight:=100, pWidth:=50
End Sub