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

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

IE. У меня есть мастер слайдов с общим названием Title_Slide и двумя вариантами.У него есть «Generic Bullet_slide» с 10 вариантами.

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

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

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

Могу ли я искать только слайды с «макетом»?Как мне настроить таргетинг на слайд макета вместо обычного слайда?

спасибо большое.

1 Ответ

0 голосов
/ 03 января 2019

Вы можете использовать объект с именем «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».

...