Powerpoint: как вставить свойство документа (он же «поле») в слайд?

31

Как вставить свойство документа (например, имя автора) в слайд в PowerPoint 2007? Я знаю, что это можно сделать в Microsoft Word, но я не могу найти, как это сделать в PowerPoint.

(Идея заключается в том, что с помощью свойства документа легко изменить, например, содержимое нижнего колонтитула на всех слайдах, даже если вы используете разные главные страницы. Если есть другое решение, это также подойдет.)

Rabarberski
источник

Ответы:

19

В то время как Word может сделать это, PowerPoint не может. AFAIK, вы можете иметь свойства документа в PPT, но вы не можете вставить их в слайд. Единственное поле обновления, доступное для PowerPoint, - это дата и номер слайда. В любом случае, для достижения этой цели в VBA может быть какое-то решение. Вы можете попросить об этом в Stackoverflow, чтобы воспользоваться вашим шансом.

Мехпер С. Палавузлар
источник
6

Просто написал подпрограмму для помещения именованных свойств в текстовые объекты с тегами на всех слайдах.

Поместить свойство файла на слайды. Создайте текстовое поле для хранения строки. В свойствах / Alt Text поместите имя свойства в квадратные скобки.

Затем выполните макрос updateProperties().

т.е. [title]- позволит заголовок документа обновляться на нескольких

Два специальных тега были написаны:

  • [copyright]вставил бы строку с авторским правом, т.е. © 1998-2013 P.Boothroyd, NIS Oskemen
  • [page] вставит номер слайда из вкладки редактора
  • 'Копировать свойства документа на все слайды
    '(c) 2013, P.Booothroyd для NIS Oskemen
    Dim processPage As Slide
    
    Sub updateProperties ()
        Dim page As Slide
        Тусклое имя As String
        проанализировать все слайды в активной презентации (документе)
        Для каждой страницы процесса в Application.ActivePresentation.Slides
            'проверить все элементы страницы на наличие текстового поля с помеченным полем "altText / title" с "["
            Для каждого объекта в processPage.Shapes
                If Left (obj.Title, 1) = "[" Тогда
                    Dim sStart, отправить как целое число
                    извлечь свойство из квадратных скобок
                    sStart = 2
                    sEnd = InStr (2, obj.Title, "]")
                    propname = Trim (Mid (obj.Title, sStart, sEnd - 2))
                    Если obj.Type = msoTextBox Тогда
                        'установить текстовое поле на запрошенное значение
                        obj.TextFrame.TextRange.Text = getProperty (propname, obj.TextFrame.TextRange.Text)
                    End If
                End If
            Следующий объект
        Следующая страница
    End Sub
    
    'получить указанное свойство документа (с необязательным значением по умолчанию)
    Функция getProperty (propname, Необязательный def As String) As String
        свойство присвоило значение по умолчанию
        getProperty = def
        Dim найден как логическое значение
        найдено = ложно
        propname = LCase (propname)
    
        авторское право является сгенерированной собственностью
        Если propname = "авторское право", то
            Тусклый автор As String
            Дим компания As String
            Тусклый год от As String
            Dim yearTo As String
    
            'получить все соответствующие переменные
            author = getProperty ("author", "")
            company = getProperty ("company", "")
            yearFrom = getProperty ("создан", "")
            yearTo = Format (Now (), "YYYY")
    
            'вставить символ авторского права
            getProperty = Chr (169) + ""
    
            'прикрепить годовой интервал для уведомления об авторских правах
            Если год
                getProperty = getProperty + yearFrom + "-"
            End If
            getProperty = getProperty + yearTo
    
            'добавить автора
            getProperty = getProperty + "" + автор
    
            'добавить разделитель для автора / компании, если оба существуют
            Если Лен (автор)> 0 И Лен (компания)> 0 Тогда
                getProperty = getProperty & ","
            End If
            getProperty = getProperty & company
    
            обработано, поэтому вернуть значение
            найдено = True
        End If
    
        Вставьте номер слайда в документ
        Если propname = "page", то
            getProperty = processPage.SlideNumber
            найдено = True
        End If
    
        'если созданное имя создано, вернуть значение
        Если найдено, то GoTo ret
    
        'проверить стандартные свойства MS (файла) именованного значения
        Для каждого p в Application.ActivePresentation.BuiltInDocumentProperties
            Если LCase (p.Name) = имя_прописки
                getProperty = p.Value
                найдено = True
                Выход для
            End If
        Следующая р
    
        сканировать для настроенных свойств названного значения
        Если найдено, то GoTo ret
        Для каждого p в Application.ActivePresentation.CustomDocumentProperties
            Если LCase (p.Name) = имя_прописки
                getProperty = p.Value
                найдено = True
                Выход для
            End If
        Следующая р
    RET:
    Конечная функция
    
    P.Boothroyd
    источник
    1

    Обходной путь заключается в использовании пользовательских свойств, которые вы можете легко «Перейти» (не нужно просматривать слайды).

    С http://msdn.itags.org/powerpoint/4426/ :

    1. Выберите фигуру или текст, для которого вы хотите установить закладку.
    2. Выбрать файл | Свойства ... и активировать вкладку Custom.
    3. Введите имя для закладки.
    4. Отметьте галочкой ссылку на контент. Значение, указанное в соседнем раскрывающемся списке, когда вы отмечаете «Ссылка на контент», является ссылкой на ваш выбор.
    5. Нажмите Добавить.
    6. Нажмите кнопку ОК, чтобы закрыть диалоговое окно «Свойства».

    Теперь, когда вы создали закладку, вы можете перейти к ней следующим образом:
    1. Выберите Edit | Перейти к свойству ...
    2. Щелкните имя свойства в диалоговом окне (это имя, которое вы дали закладке).
    3. Нажмите Перейти.

    Диалоговое окно «Перейти к» предоставляет вам список закладок, по которым вы можете дважды щелкнуть, и переходит к вашим любимым текстовым полям, готовым для редактирования / вставки.

    thenonhacker
    источник
    1

    Самый простой способ сделать это в Powerpoint (по крайней мере, для значений, которые будут отображаться на каждом слайде) - это отредактировать мастер слайдов. Поместите имя автора там.

    (Возможная причина, по которой Word позволяет вам, а не всем остальным, заключается в том, что различные команды в Microsoft редко общаются друг с другом ...)

    Тор Ивер Вильгельмсен
    источник
    1
    См. Второй абзац в моем вопросе: «... даже если вы используете разные главные страницы ...»
    Рабарберски
    0

    Обновление для кода дескриптора с ppt 2019: я немного изменил подпрограмму for-next, причина в том, что пользователю переднего плана легче изменить «альтернативный текст» правой кнопкой мыши:

        For Each ShapeObj In processPage.Shapes
             If Left(ShapeObj.AlternativeText, 1) = "[" Then
            'If Left(ShapeObj.Title, 1) = "[" Then
                Dim sStart, sEnd As Integer
                ' extract property from between square brackets
                sStart = 2
                'sEnd = InStr(2, ShapeObj.Title, "]")
                sEnd = InStr(2, ShapeObj.AlternativeText, "]")
                'propname = Trim(Mid(ShapeObj.Title, sStart, sEnd - 2))
                propname = Trim(Mid(ShapeObj.AlternativeText, sStart, sEnd - 2))
                    ShapeObj.TextFrame.TextRange.Text = getProperty(propname, ShapeObj.TextFrame.TextRange.Text)
    
            End If
        Next ' obj
    
    Патрик Тильге
    источник