Powerpoint: come inserire la proprietà del documento (aka "campo") nella diapositiva?


31

Come posso inserire una proprietà del documento (ad es. Il nome dell'autore) in una diapositiva in PowerPoint 2007? So che questo può essere fatto in Microsoft Word, ma non riesco a trovare come farlo in PowerPoint.

(L'idea è che con una proprietà del documento è facile cambiare, ad esempio, il contenuto del piè di pagina in tutte le diapositive, anche se si utilizzano pagine master diverse. Se esiste una soluzione diversa, andrebbe anche bene.)

Risposte:


19

Mentre Word può fare questo, PowerPoint no. AFAIK, puoi avere le proprietà del documento in PPT, ma non puoi inserirle in una diapositiva. L'unico campo di aggiornamento disponibile per PowerPoint è la data e il numero di diapositiva. Ad ogni modo, potrebbe esserci qualche soluzione alternativa in VBA per raggiungere questo obiettivo. Puoi chiedere a Stackoverflow di cogliere l'occasione.



6

Ho appena scritto una subroutine per inserire le proprietà denominate negli oggetti di testo con tag su tutte le diapositive.

Per inserire una proprietà del file nelle diapositive. Crea una casella di testo per contenere la stringa. Nelle proprietà / Testo alternativo inserisci il nome della proprietà tra parentesi quadre.

Quindi eseguire la macro updateProperties().

cioè [title]: consentirebbe di aggiornare il titolo del documento su più

Sono stati scritti due tag speciali:

  • [copyright]inserirà una stringa di copyright, ad esempio © 1998-2013 P.Boothroyd, NIS Oskemen
  • [page] inserisce il numero di diapositiva dalla scheda dell'editor
  • 'Copia le proprietà del documento in tutte le diapositive
    "(c) 2013, P. Boothroyd per NIS Oskemen
    Dim processPagina come diapositiva
    
    Aggiornamento secondarioProperties ()
        Pagina fioca come diapositiva
        Dim nome prop. Come stringa
        'analizzare tutte le diapositive nella presentazione attiva (documento)
        Per ogni processo Pagina in Application.ActivePresentation.Slides
            'controlla tutti gli elementi della pagina per la casella di testo con il campo "altText / title" taggato con "["
            Per ogni oggetto In processPage.Shapes
                If Left (obj.Title, 1) = "[" Quindi
                    Dim sStart, sEnd As Integer
                    'estrae la proprietà tra parentesi quadre
                    inizio = 2
                    sEnd = InStr (2, obj.Title, "]")
                    propname = Trim (Mid (obj.Title, sStart, sEnd - 2))
                    Se obj.Type = msoTextBox Quindi
                        'imposta la casella di testo sul valore richiesto
                        obj.TextFrame.TextRange.Text = getProperty (propname, obj.TextFrame.TextRange.Text)
                    Finisci se
                Finisci se
            Avanti 'obj
        Pagina successiva
    End Sub
    
    'ottenere la proprietà del documento con nome (con impostazione predefinita facoltativa)
    Funzione getProperty (nome prop, def opzionale come stringa) come stringa
        'proprietà assegnata al valore predefinito
        getProperty = def
        Dim trovato come booleano
        trovato = falso
        propname = LCase (propname)
    
        "il copyright è una proprietà generata
        Se propname = "copyright" Quindi
            Autore fioco come stringa
            Dim azienda come stringa
            Dim year Da String
            Dim year To To String
    
            'ottenere tutte le variabili appropriate
            author = getProperty ("author", "")
            company = getProperty ("company", "")
            yearFrom = getProperty ("Created", "")
            yearTo = Format (Now (), "YYYY")
    
            'inserire il simbolo del copyright
            getProperty = Chr (169) + ""
    
            "allega un anno per l'informazione sul copyright
            Se yearDal yearTo Quindi
                getProperty = getProperty + yearFrom + "-"
            Finisci se
            getProperty = getProperty + yearTo
    
            'aggiungi l'autore
            getProperty = getProperty + "" + autore
    
            'aggiungi un separatore per autore / azienda se esistono entrambi
            Se Len (autore)> 0 E Len (azienda)> 0 Allora
                getProperty = getProperty & ","
            Finisci se
            getProperty = getProperty & company
    
            'elaborato, quindi restituisce il valore
            found = True
        Finisci se
    
        'inserire il numero della diapositiva nel documento
        Se propname = "page" Quindi
            getProperty = processPage.SlideNumber
            found = True
        Finisci se
    
        'se il nome generato creato restituisce il valore
        Se trovato, vai a Ret
    
        'cerca le proprietà MS (file) standard del valore indicato
        Per ogni p In Application.ActivePresentation.BuiltInDocumentProperties
            Se LCase (p.Name) = nome prop. Quindi
                getProperty = p.Value
                found = True
                Esci per
            Finisci se
        Avanti 'p
    
        'cerca le proprietà personalizzate del valore indicato
        Se trovato, vai a Ret
        Per ogni p In Application.ActivePresentation.CustomDocumentProperties
            Se LCase (p.Name) = nome prop. Quindi
                getProperty = p.Value
                found = True
                Esci per
            Finisci se
        Avanti 'p
    ret:
    Fine funzione
    

    1

    Una soluzione alternativa consiste nell'utilizzare proprietà personalizzate che puoi facilmente "Vai a" (non è necessario scorrere le diapositive).

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

    1. Seleziona la forma o il testo su cui desideri impostare un segnalibro.
    2. Seleziona File | Proprietà ... e attiva la scheda Personalizzata.
    3. Digita un nome per il segnalibro.
    4. Spuntare "Link al contenuto". Il valore elencato nella casella a discesa adiacente quando si spunta "Link al contenuto" è un riferimento alla selezione.
    5. Clicca Aggiungi.
    6. Fare clic su OK per chiudere la finestra di dialogo Proprietà.

    Ora che hai creato un segnalibro, puoi passare ad esso come segue:
    1. Seleziona Modifica | Vai a proprietà ...
    2. Fare clic sul nome della proprietà dalla finestra di dialogo (questo è il nome assegnato al segnalibro).
    3. Fare clic su Vai a.

    La finestra di dialogo "Vai a" ti mostra un elenco di segnalibri su cui puoi fare doppio clic e passa alle tue caselle di testo preferite, pronte per essere modificate / incollate.


    1

    Il modo più semplice per farlo in Powerpoint (almeno per i valori che appariranno su ogni diapositiva) è modificare il master delle diapositive. Inserisci il nome dell'autore lì.

    (Una possibile ragione per cui Word ti consente, e nessuno degli altri lo fa, è che i vari team di Microsoft parlano raramente tra loro ...)


    1
    Vedi il secondo paragrafo della mia domanda: "... anche se usi pagine master diverse ..."
    Rabarberski,

    0

    Aggiornamento per gestire il codice con ppt 2019: ho modificato un po 'la routine per il prossimo, la causa è che è più facile per un utente front-end cambiare il "testo alternativo" con il tasto destro 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
    
    Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
    Licensed under cc by-sa 3.0 with attribution required.