Powerpoint: ¿cómo insertar la propiedad del documento (también conocido como 'campo') en la diapositiva?

31

¿Cómo puedo insertar una propiedad de documento (por ejemplo, el nombre del autor) en una diapositiva en PowerPoint 2007? Sé que esto se puede hacer en Microsoft Word, pero no puedo encontrar cómo hacerlo en PowerPoint.

(La idea es que con una propiedad de documento es fácil cambiar, por ejemplo, el contenido del pie de página en todas las diapositivas, incluso si usa páginas maestras diferentes. Si hay una solución diferente, también estaría bien).

Rabarberski
fuente

Respuestas:

19

Si bien Word puede hacer esto, PowerPoint no puede. AFAIK, puede tener propiedades de documento en PPT, pero no puede insertarlas en una diapositiva. El único campo de actualización disponible para PowerPoint es la fecha y el número de diapositiva. De todos modos, podría haber alguna solución en VBA para lograr esto. Puede pedir esto en Stackoverflow para aprovechar su oportunidad.

Mehper C. Palavuzlar
fuente
6

Acabo de escribir una subrutina para poner propiedades con nombre en objetos de texto etiquetados en todas las diapositivas.

Para poner una propiedad de archivo en diapositivas. Cree un cuadro de texto para contener la cadena. En las propiedades / Texto alternativo, coloque el nombre de la propiedad entre corchetes.

Luego ejecuta la macro updateProperties().

es decir [title], permitiría que el título del documento se actualice en múltiples

Se han escrito dos etiquetas especiales:

  • [copyright]insertaría una cadena de copyright, es decir, © 1998-2013 P.Boothroyd, NIS Oskemen
  • [page] insertaría el número de diapositiva desde la pestaña del editor
  • 'Copie las propiedades del documento en todas las diapositivas
    «(c) 2013, P.Boothroyd para NIS Oskemen
    Proceso atenuado Página como diapositiva
    
    Sub updateProperties ()
        Dim página como diapositiva
        Dim propname As String
        'analizar todas las diapositivas en la presentación activa (documento)
        Para cada proceso Página en la aplicación Presentación activa Diapositivas
            'escanee todos los elementos de la página para el cuadro de texto con el campo "altText / title" etiquetado con "["
            Para cada obj en processPage.Shapes
                If Left (obj.Title, 1) = "[" Entonces
                    Comienzo tenue, fin como número entero
                    'extraer propiedad de entre corchetes
                    sStart = 2
                    sEnd = InStr (2, obj.Title, "]")
                    propname = Trim (Mid (obj.Title, sStart, sEnd - 2))
                    Si obj.Type = msoTextBox Entonces
                        'establece el cuadro de texto en el valor solicitado
                        obj.TextFrame.TextRange.Text = getProperty (propname, obj.TextFrame.TextRange.Text)
                    Terminara si
                Terminara si
            Siguiente 'obj
        Siguiente página
    End Sub
    
    'obtener la propiedad del documento nombrado (con el valor predeterminado opcional)
    Función getProperty (propname, Def opcional como cadena) como cadena
        'propiedad asignada al valor predeterminado
        getProperty = def
        Dim encontrado como booleano
        encontrado = falso
        propname = LCase (propname)
    
        'el copyright es una propiedad generada
        If propname = "copyright" Entonces
            Dim autor como cadena
            Dim empresa como cadena
            Año débil de como cadena
            Año débil como cadena
    
            'obtener todas las variables apropiadas
            author = getProperty ("autor", "")
            empresa = getProperty ("empresa", "")
            yearFrom = getProperty ("creado", "")
            yearTo = Format (Now (), "AAAA")
    
            'insertar símbolo de copyright
            getProperty = Chr (169) + ""
    
            'adjunte período de tiempo para aviso de derechos de autor
            Si año Desde año Hasta entonces
                getProperty = getProperty + yearFrom + "-"
            Terminara si
            getProperty = getProperty + yearTo
    
            'agregar el autor
            getProperty = getProperty + "" + autor
    
            'agregar separador para autor / empresa si ambos existen
            Si Len (autor)> 0 Y Len (compañía)> 0 Entonces
                getProperty = getProperty & ","
            Terminara si
            getProperty = getProperty & company
    
            'procesado, así que devuelve el valor
            encontrado = verdadero
        Terminara si
    
        'inserte el número de diapositiva en el documento
        If propname = "page" Entonces
            getProperty = processPage.SlideNumber
            encontrado = verdadero
        Terminara si
    
        'si el nombre generado creado devuelve el valor
        Si se encuentra, entonces vaya a ret
    
        'buscar propiedades estándar de MS (archivo) del valor nombrado
        Para cada p en Application.ActivePresentation.BuiltInDocumentProperties
            If LCase (p.Name) = propname Entonces
                getProperty = p.Value
                encontrado = verdadero
                Salir por
            Terminara si
        Siguiente 'p
    
        'buscar propiedades personalizadas del valor nombrado
        Si se encuentra, entonces vaya a ret
        Para cada p en Application.ActivePresentation.CustomDocumentProperties
            If LCase (p.Name) = propname Entonces
                getProperty = p.Value
                encontrado = verdadero
                Salir por
            Terminara si
        Siguiente 'p
    jubilado:
    Función final
    
    P.Boothroyd
    fuente
    1

    Una solución alternativa es usar propiedades personalizadas que pueda fácilmente "Ir a" (sin necesidad de pasar por las diapositivas).

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

    1. Seleccione la forma o el texto en el que desea establecer un marcador.
    2. Seleccionar archivo | Propiedades ... y active la pestaña Personalizado.
    3. Escriba un nombre para el marcador.
    4. Marque 'Enlace al contenido'. El valor que aparece en el cuadro desplegable adyacente cuando marca 'Enlace al contenido' es una referencia a su selección.
    5. Haz clic en Agregar.
    6. Haga clic en Aceptar para cerrar el cuadro de diálogo Propiedades.

    Ahora que ha creado un marcador, puede saltar a él de la siguiente manera:
    1. Seleccione Editar | Ir a propiedad ...
    2. Haga clic en el nombre de la propiedad en el cuadro de diálogo (este es el nombre que le dio al marcador).
    3. Haga clic en Ir a.

    El cuadro de diálogo "Ir a" le presenta una lista de marcadores a los que puede hacer doble clic, y va a sus cuadros de texto favoritos, listos para ser editados / pegados.

    thenonhacker
    fuente
    1

    La forma más fácil de hacer esto en Powerpoint (al menos para los valores que aparecerán en cada diapositiva) es editar el patrón de diapositivas. Pon el nombre del autor allí.

    (Una posible razón por la que Word le permite, y ninguno de los otros lo hace, es que los diversos equipos de Microsoft rara vez se hablan entre sí ...)

    Tor Iver Wilhelmsen
    fuente
    1
    Vea el segundo párrafo en mi pregunta: '... incluso si usa diferentes páginas maestras ...'
    Rabarberski
    0

    Actualización para el código de manejo con ppt 2019: cambié un poco la rutina para el próximo, la causa es que es más fácil para un usuario front-end cambiar el "texto alternativo" con el botón derecho del mouse:

        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
    
    Tilge Patric
    fuente