2016-07-22 7 views
0

残念ながら、PowerPointでテキストを正規化する必要があるすべてのグループ化された図形をスキップしています(ハード戻り値はスペースマークでスワップされます)。さて、私はテキストを持つすべての図形を見つけてそれらをグループ解除するべきである「準備する」スクリプトを書いた。何らかの理由でそれが機能していません。これはとてもシンプルなはずですが、私はそれを働かせることはできません。助けてください!すべてのスライド内のすべてのPowerPoint Shapeをグループ化解除するVBA

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

グループにはTextFrameがありませんので、決して起こらないことをテストしています。

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 

を、それが壊れていない場合、我々は必要ありません。考えてみましょうそれを修正する。

関連する問題