Как получить заголовок раздела и изменить заголовок слайдов в разделе? - PullRequest
0 голосов
/ 05 апреля 2019

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

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

Sub test()

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


End Sub

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

1 Ответ

0 голосов
/ 05 апреля 2019

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

  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

РЕДАКТИРОВАТЬ:

Если вы хотите изменить местозаполнитель, отличный от заголовка, вы можете сделать что-то вроде этого.Исходя из вашего скриншота, я предполагаю, что местозаполнитель, который вы хотите изменить, является третьим (заголовок 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
...