Как изменить конкретное текстовое поле в мастере слайдов PowerPoint

У меня есть PowerPoint, который использует разные макеты мастера на мастер слайдов. Каждый раз, когда мы делаем обновление, необходимо обновить определенное текстовое поле на определенных основных слайдах. Я хотел бы сделать это с помощью макроса.

Т.е. у меня есть мастер слайдов с общим названием Title_Slide и двумя вариациями под него. У этого есть "Общий Bullet_slide" с 10 изменениями под этим.

на "Общей странице Bullet_Slide" есть текстовое поле, содержащее две строки: "CONFIG. MGR: [ваше имя], [ваш код], [ваш номер телефона]" "" ИМЯ ФАЙЛА: [имя файла] "

каждый раз, когда мы отправляем проект, нам нужно обновлять поля в [] вручную. Если мы забудем его плохие новости.

Я видел, как перебрать все слайды, а затем все формы, чтобы найти текстовые поля. Могу ли я найти коробки, в которых есть эти слова ("CONFIG. MGR:" и "FILE NAME:")?

Могу ли я искать только слайды с "макетом"? как нацелить что-либо на слайд макета вместо обычного слайда?

огромное спасибо.

1 ответ

Решение

Вы можете использовать объект с именем "ActivePresentation.Designs(x).SlideMaster.CustomLayouts" для доступа к каждому слайду пользовательского макета в конструкциях SlideMaster. (Вы можете иметь более 1 дизайна в презентации.)

Доступ к подобъектам на слайдах с пользовательским макетом аналогичен работе с обычными слайдами.

Я думаю, что вы можете попробовать следующий код автоматизации:

Option Explicit
Option Compare Text 'Ignore Upper/Lower case

Sub UpdateCustomLayouts()

    Dim DSN As Design
    Dim CL As CustomLayout
    Dim shp As Shape
    Dim mName As String, mCode As String, mPhone As String, fName As String

    'First, change following variables before running this macro
    mName = "Your name"
    mCode = "Your code"
    mPhone = "0123456789"
    fName = ActivePresentation.Name

    'Loop each customlayouts
    For Each DSN In ActivePresentation.Designs
        For Each CL In DSN.SlideMaster.CustomLayouts
            For Each shp In CL.Shapes
                If shp.HasTextFrame Then

                    'find and update textboxes
                    With shp.TextFrame.TextRange
                        If .Text Like "CONFIG. MGR:*" Then
                            .Text = "CONFIG. MGR: " & mName & ", " & mCode & ", " & mPhone
                        ElseIf .Text Like "FILE NAME:*" Then
                            .Text = "FILE NAME: " & fName
                        End If
                    End With

                End If
            Next shp
        Next CL
    Next DSN

End Sub

Как я уже говорил, сначала измените переменные, такие как "mName, mCode, mPhone, fName", прежде чем запускать.

Другие вопросы по тегам