2010-07-05 4 views

답변

1

슬라이드의 모든 자리 표시자를 반복하고 각 유형을 결정한 다음 예상 한 형식으로 채워져 있는지 확인해야합니다. 18 PpPlaceholderType이 있으므로 모두 설정해야하지만 다음은 자리 표시자가 사용 중인지 확인하기 위해 수행 할 수있는 샘플입니다.

Sub CheckPlaceholders() 
Dim ap As Presentation: Set ap = ActivePresentation 
Dim sl As Slide: Set sl = ap.Slides(2) 
Dim shs As Shapes: Set shs = sl.Shapes 
Dim ph As Placeholders: Set ph = shs.Placeholders 
Dim p As Shape 
    For Each p In ph 
     Select Case p.Type 
     Case PpPlaceholderType.ppPlaceholderHeader 
      If p.TextFrame.HasText Then 
       Debug.Print "This Placeholder is in use" 
      End If 
     Case PpPlaceholderType.ppPlaceholderChart 
      If p.HasChart Then 
       Debug.Print "This Placeholder is in use" 
      End If 
     End Select 
    Next 
End Sub 

가이 자리에 도착이, 말, 그림을 삽입하지 않으려면, 내가 찾은 유일한 방법은 그들 중 하나가 될 때까지 사진을 추가하는 루프를 만들 수있는 자리를 벗어난 후 삭제 이미 삽입 된 것.

Sub AddPicture() 
    Dim pic As String 
    pic = "C:\Users\Me\Desktop\beigeplum.jpg" 
    Dim ap As Presentation: Set ap = ActivePresentation 
    Dim sl As Slide: Set sl = ap.Slides(1) 
    Dim sh As Shape 

    Do 
     Set sh = sl.Shapes.AddPicture(pic, msoFalse, msoTrue, 1, 1) 
     sh.Tags.Add "MYPICTURE", 0 
    Loop Until sh.Type <> 14 

    Dim p As Shape 
    For Each p In sl.Shapes 
     If p.Type = 14 Then 
      If p.Tags.count > 0 Then 
       If p.Tags.Name(1) = "MYPICTURE" Then 
        p.Delete 
       End If 
      End If 
     End If 
    Next 
End Sub 
+0

나는이 해결책을 알고 있었고, 나는 더 우아한 것을 찾고 있었다. 자리 표시 자의 자동 사용은 레이아웃이있는 슬라이드에 객체를 추가하려고합니다. ppLayoutObject using activeSlide.Shapes.AddPicture (...); – Dudi

+0

예, PPT2007 이후 모든 것이 자리 표시 자와 조금 이상해졌습니다. 다른 게시물에서 언급 한 솔루션이이를 수행하는 한 가지 방법이지만, 맞습니다. 예전의 슬 라이더 아웃이 다시 적용될 때 그 반대가 있습니다. 내가 찾은 유일한 방법은 일종의 해킹이다. 위의 업데이트를 참조하십시오. –

+0

자리 표시 자 사용법에 관해서는 이것에 관해서는 꽤 우아합니다. ( –

1

더 우아한 해결책 자리 표시 자 항목을 포함 여부, 그리고 모든 종류의 일반적인이다 있는지 확인합니다 : 아무것도 내부에 배치되어 있지 않은 경우

if (selectedSlide.Shapes.Placeholders[i].PlaceholderFormat.ContainedType != Microsoft.Office.Core.MsoShapeType.msoAutoShape) 

자리 표시 ContainedType msoAutoShape이다 자리 표시 자. 예를 들어 이미지를 자리 표시 자에 삽입하면 유형이 항목 유형 (이 경우 msoPicture)으로 바뀝니다.

Office는 첫 번째 사용 가능한 자리 표시 자 (마스터 파일에서 첫 번째로 추가됨)에 항목을 자동으로 추가하거나 이미지의 경우 ppPlaceholderPicture가 우선 순위를 지정합니다.

+1

이 질문에 답하는 부분은 제가 사무실을 강요하는 방법에 더 관심이있는 시점이었습니다. 자리 표시 자에 그림을 추가하십시오. – Dudi

+0

내용이있는 경우에도 때때로 도형이 변경 될 수 있습니다. : - / – BrainSlugs83

관련 문제