2015-06-24 5 views
0

Я пытаюсь выяснить, есть ли в моем представлении определенный пользовательский макет. Я хочу использовать это для создания слайда с TOC, который отображает слайды с этим конкретным макетом.Найти slidelayout в PowerPoint

После некоторых поисков и попыток я получил это далеко, но она ликвидирует на ниже жирным пункта, любые предложения:

Sub ShowSlideLayouts() 

    Dim oSlide As Slide 
    Dim idSlide As String 
    Dim oLayoutName As String 
    Dim sFileName As String 
    Dim iFileNum As String 

    sFileName = "C:\temp\PowerPointLayouts.TXT" 

    iFileNum = FreeFile() 
    Open sFileName For Output As iFileNum 

    For Each oSlide In ActivePresentation.Slides 
    idSlide = ActivePresentation.Slides.***SlideID*** <-- wrong method/member 

    'Print #iFileNum, oSlide.Layout 
    Print #iFileNum, ActivePresentation.Slides(idSlide).CustomLayout.Name 
    'Print #iFileNum, ActivePresentation.Slides.getAttribute("layout") 
    'For Each oLayoutName In ActivePresentation.Slides().CustomLayouts.Name 
    'MsgBox ActivePresentation.Slides(idSlide).CustomLayout.Name 
     'Print #iFileNum, oLayoutName.Id & vbTab & oLayoutName.Caption 
    ' Next 

Next 

    Close iFileNum 

End Sub 

ответ

0

Вам не нужно все, что беспорядок с idSlide; oSlide дает вам ссылку на каждый слайд в презентации, поэтому:

For Each oSlide In ActivePresentation.Slides 
    Debug.Print oSlide.CustomLayout.Name 
Next 
+0

Спасибо за обновление, работает.
'iFileNum = FreeFile() Открыть sFileName для вывода Как iFileNum При х = 1 К ActivePresentation.Slides.Count С ActivePresentation печати #iFileNum, .Slides (х) .CustomLayout.Name & vbTab & .Slides (х) .CustomLayout.Index Конец Следующий Закрыть iFileNum ' –

+0

Извините за неправильное форматирование, попробовал, но теперь система дает мне 5-минутное предупреждение. –

+0

Чтобы быть уверенным, вы имеете в виду, что код работает, но SO не позволит вам переформатировать. Другими словами, все нормально, не так ли? –