簡體   English   中英

PowerPoint VBA - 合並形狀未知數量的形狀

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM