[英]PowerPoint VBA - merge shapes for unknown number of shapes
我又來找你求智慧了!
我編寫了一些代碼來插入幾個形狀(動態數字取決於用戶選擇),作為最后一步,需要使用 MergeShapes 方法合並它們
https://docs.microsoft.com/en-us/office/vba/api/powerpoint.shaperange.mergeshapes
如果您有一定數量的形狀對象,則此解決方案有效: 兩個形狀合並為聯合使用 vba 在 powerpoint
但我不能讓它適用於未知數量的形狀。
我努力了:
首先將數組中的所有形狀存儲在數組中並嘗試合並它
ReDim UnionArray(1 To ShapeCounter) For i = 1 To ShapeCounter Set UnionArray(i) = TempSlide.Shapes("Wrapper" & ShapeCounter) Next i TempSlide.Shapes(UnionArray).MergeShapes (msoMergeUnion)
構建一串形狀名稱並嘗試使用它
Dim ShapeNamesArray As String ShapeNamesArray = """" & "Wrapper1" & """" For i = 2 To ShapeCounter ShapeNamesArray = ShapeNamesArray & ", " & """" & "Wrapper" & i & """" Next i
上面產生一個字符串,如:“Wrapper1”、“Wrapper2”、“Wrapper3”
TempSlide.Shapes.Range(Array(ShapeNamesArray)).MergeShapes (msoMergeUnion)
編輯:我也嘗試過構建一個 ZOrderPositions 字符串。 如果您...Range(Array(5, 6, 8)).MergeShapes... 它有效,但如果您執行 ArrZOrders = "5, 6, 8" 然后...Range(Array(ArrZOrders)) .MergeShapes...
有任何想法嗎?
這對我有用(使用從零開始的數組)
Dim arr(0 To 2)
arr(0) = "Rectangle 10"
arr(1) = "Rectangle 9"
arr(2) = "Rectangle 8"
With ActivePresentation.Slides(1)
.Shapes.Range(arr).MergeShapes msoMergeUnion
End With
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.