Как мне захватить заголовок раздела и изменить заголовок слайдов в разделе?

#vba #powerpoint

#vba #powerpoint

Вопрос:

Я пишу скрипт на VBA, чтобы изменить заголовок слайда на заголовок раздела. У меня есть несколько разделов, и я хочу выполнить итерацию через ppt, чтобы изменить все заголовки слайдов, чтобы они имели тот же заголовок раздела, что и его раздел.

Я попытался найти, как захватить заголовок раздела и установить его в заголовок слайда.

 Sub test()

ActivePresentation.Slides.Name = ActivePresentation.SectionProperties(sectionName)


End Sub
  

Мне нужно добавить итерацию, мне нужно, чтобы я считал, что синтаксис испорчен.

Ответ №1:

Надеюсь, что-то вроде следующего — это то, что вы ищете. Код

  1. Перебирает каждый слайд в ActivePresentation , добавляя заголовок, если его еще нет.
  2. Изменяет текст заголовка, получая sectionIndex свойство слайда, а затем используя этот индекс в SectionProperties.Name методе для извлечения соответствующего текста.

 Sub ChangeMyTitles()
    Dim sld As Slide
    Dim titleShape As Shape

    If ActivePresentation.SectionProperties.Count = 0 Then Exit Sub

    For Each sld In ActivePresentation.Slides
        With sld
            If Not .Shapes.HasTitle Then
                Set titleShape = .Shapes.AddTitle
            Else
                Set titleShape = .Shapes.Title
            End If

            titleShape.TextFrame2.TextRange.Text = ActivePresentation.SectionProperties.Name(.sectionIndex)
        End With
    Next sld
End Sub
  

Редактировать:

Если вы хотите изменить другой заполнитель, отличный от заголовка, вы могли бы сделать что-то вроде этого. Основываясь на вашем скриншоте, я предполагаю, что заполнитель, который вы хотите изменить, является 3-м (заголовок 1-й, основная часть 2-я, а глава 3-я), но вам, возможно, придется изменить 3 ниже.

 Sub ChangeMyChapters()
    Dim sld As Slide
    Dim chapterShape As Shape

    If ActivePresentation.SectionProperties.Count = 0 Then Exit Sub

    For Each sld In ActivePresentation.Slides
        With sld
            Set chapterShape = .Shapes.Placeholders(3)
            chapterShape.TextFrame2.TextRange.Text = ActivePresentation.SectionProperties.Name(.sectionIndex)
        End With
    Next sld
End Sub
  

Комментарии:

1. Потрясающе, вы случайно не знаете свойство «Chapter», я полагаю, что это textholder, оно прямо над заголовком/

2. Я не совсем уверен, о чем вы говорите. Может быть, вы можете добавить скриншот образца слайда, указав на него? Или, может быть, скриншот слайда в представлении slidemaster, чтобы я мог видеть, какой это элемент?

3. ссылку я обвел, надеюсь, это поможет.

4. Да, это помогает. Это может занять некоторое время, но я постараюсь взглянуть позже сегодня.

5. Спасибо, ваш код работал ранее для заголовка. Только что изменил планы с PPT. Я пытался изменить код. VBA немного сбивает с толку, ЛОЛ.