#vba #powerpoint
#vba #powerpoint
Вопрос:
Я пишу скрипт на VBA, чтобы изменить заголовок слайда на заголовок раздела. У меня есть несколько разделов, и я хочу выполнить итерацию через ppt, чтобы изменить все заголовки слайдов, чтобы они имели тот же заголовок раздела, что и его раздел.
Я попытался найти, как захватить заголовок раздела и установить его в заголовок слайда.
Sub test()
ActivePresentation.Slides.Name = ActivePresentation.SectionProperties(sectionName)
End Sub
Мне нужно добавить итерацию, мне нужно, чтобы я считал, что синтаксис испорчен.
Ответ №1:
Надеюсь, что-то вроде следующего — это то, что вы ищете. Код
- Перебирает каждый слайд в
ActivePresentation
, добавляя заголовок, если его еще нет. - Изменяет текст заголовка, получая
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 немного сбивает с толку, ЛОЛ.