簡體   English   中英

在PowerPoint中使用VBA復制粘貼形狀

[英]Copy paste shape by using VBA in PowerPoint

我正在嘗試使用PowerPoint中的VBA復制粘貼形狀。
此代碼無法退出If...End If語句。
我的代碼出了什么問題?

Sub pasteshape()
    Dim oSl As Slide
    Dim oSh As Shape
        For Each oSl In ActivePresentation.Slides
        For Each oSh In oSl.Shapes    
            If oSh.Fill.Type = msoFillSolid Then
               oSh.Duplicate
            End If
        Next
        Next
End Sub

當你迭代它時 ,你正在改變你正在迭代的集合; 總是一個壞主意!

所以你有一個無限循環,因為每次復制一個形狀時,你都有效地為oSl.Shapes集合添加一個實心填充形狀,然后是一個應該重復的實心填充形狀 - 對吧?

您需要一種方法來分離知道要復制哪些形狀復制實心填充形狀的過程

制作新系列:

Dim solidShapes As Collection
Set solidShapes = New Collection

現在迭代幻燈片及其形狀,但不是立即復制,而是將它們添加到該集合中

    For Each currentShape In currentSlide.Shapes    
        If currentShape.Fill.Type = msoFillSolid Then
           solidShapes.Add currentShape
        End If
    Next

請注意,我使用的是沒有系統匈牙利語 (也就是無用的)前綴的可讀標識符(讀取該鏈接! 特別是如果您堅信匈牙利表示法)。

現在,您可以迭代solidShapes集合,並.Duplicate每個項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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