2016-07-22 76 views
0

我有一個不幸跳過PowerPoint中文本需要標準化(硬返回與空白標記交換)的所有分組形狀的宏。現在,我寫了一個'準備'腳本,應該找到所有帶有文本的形狀並將它們取消組合。由於某種原因,它不起作用。這應該是如此簡單,但我不能得到它的工作。請幫忙!VBA將所有幻燈片中的所有PowerPoint形狀取消組合

Sub Ungroupallshapes() 
    Dim osld As Slide 
    Dim oshp As Shape 
    For Each osld In ActivePresentation.Slides 
     For Each oshp In osld.Shapes 
      If oshp.Type = msoGroup Then 
       If oshp.HasTextFrame Then 
        If oshp.TextFrame.HasText Then oshp.Ungroup 
        End If 
       End If 
     Next oshp 
    Next osld 
End Sub 

謝謝!

回答

0

羣組沒有TextFrames,所以你正在測試一些永遠不會發生的事情。

If oshp.Type = msoGroup then oshp.Ungroup 

應該爲簡單的分組做準備。但是,取消組合可能會產生不必要的副作用(例如,在組形狀上吹走任何動畫)。而且通常不是必需的。試想一下:

Sub ChangeTheText() 

    Dim oshp As Shape 
    Dim oSld As Slide 
    Dim x As Long 

    For Each oSld In ActivePresentation.Slides 
     For Each oshp In oSld.Shapes 
      If oshp.HasTextFrame Then 
       oshp.TextFrame.TextRange.Text = "Ha! Found you!" 
      Else 
       If oshp.Type = msoGroup Then 
        For x = 1 To oshp.GroupItems.Count 
         If oshp.GroupItems(x).HasTextFrame Then 
          oshp.GroupItems(x).TextFrame.TextRange.Text _ 
           = "And you too, you slippery little devil!" 
         End If 
        Next 
       End If 
      End If 
     Next 
    Next 
End Sub 

這仍然留下您與組組合中可能出現的問題(組內(組內))等,有周圍的方式,但如果沒壞,我們不需要要解決這個問題。

相關問題