Powerpoint: Wie füge ich Dokumenteigenschaften (auch als "Feld" bezeichnet) in eine Folie ein?

31

Wie kann ich in PowerPoint 2007 eine Dokumenteigenschaft (z. B. den Namen des Autors) in eine Folie einfügen? Ich weiß, dass dies in Microsoft Word möglich ist, kann aber in PowerPoint keine Anleitung finden.

(Die Idee ist, dass es mit einer Dokumenteigenschaft einfach ist, z. B. den Inhalt der Fußzeile in allen Folien zu ändern, selbst wenn Sie verschiedene Masterseiten verwenden. Wenn es eine andere Lösung gibt, wäre das auch in Ordnung.)

Rabarberski
quelle

Antworten:

19

Während Word dies kann, kann PowerPoint dies nicht. AFAIK, Sie können Dokumenteigenschaften in PPT haben, aber Sie können sie nicht auf einer Folie einfügen. Das einzige für PowerPoint verfügbare Aktualisierungsfeld ist das Datum und die Foliennummer. Auf jeden Fall könnte es in VBA eine Problemumgehung geben, um dies zu erreichen. Sie können dies bei Stackoverflow anfordern, um Ihre Chance zu nutzen.

Mehper C. Palavuzlar
quelle
6

Habe gerade eine Unterroutine geschrieben, um benannte Eigenschaften in markierte Textobjekte auf allen Folien einzufügen.

So platzieren Sie eine Dateieigenschaft auf Folie (n). Erstellen Sie ein Textfeld für die Zeichenfolge. Setzen Sie in den Eigenschaften / Alt Text den Eigenschaftsnamen in eckige Klammern.

Führen Sie dann das Makro aus updateProperties().

dh [title]- würde erlauben, dass der Dokumenttitel mehrfach aktualisiert wird

Es wurden zwei spezielle Tags geschrieben:

  • [copyright]würde einen Copyright-String einfügen, zB © 1998-2013 P.Boothroyd, NIS Oskemen
  • [page] würde die Foliennummer aus der Registerkarte Editor einfügen
  • 'Kopiere Dokumenteigenschaften in alle Folien
    „c) 2013, P. Boothroyd für NIS Oskemen
    Dim processPage As Slide
    
    Sub updateProperties ()
        Seite als Folie abdunkeln
        Dim propname As String
        'Alle Folien in der aktiven Präsentation (Dokument) analysieren
        Für jede processPage In Application.ActivePresentation.Slides
            'scanne alle Elemente der Seite nach Textbox mit dem Tag "altText / title" Feld mit "["
            Für jedes Objekt In processPage.Shapes
                If Left (obj.Title, 1) = "[" Then
                    Dim sStart, sEnd As Integer
                    'extrahiere die Eigenschaft zwischen eckigen Klammern
                    sStart = 2
                    sEnd = InStr (2, obj.Title, "]")
                    propname = Trim (Mid (obj.Title, sStart, sEnd - 2))
                    Wenn obj.Type = msoTextBox Dann
                        'Setzen Sie das Textfeld auf den gewünschten Wert
                        obj.TextFrame.TextRange.Text = getProperty (propname, obj.TextFrame.TextRange.Text)
                    End If
                End If
            Nächstes 'obj
        Nächste Seite
    End Sub
    
    'benannte Dokumenteigenschaft holen (mit optionalem Standard)
    Funktion getProperty (propname, Optional def As String) As String
        'Eigenschaft hat den Standardwert zugewiesen
        getProperty = def
        Dim hat As Boolean gefunden
        gefunden = falsch
        propname = LCase (propname)
    
        'copyright ist eine erzeugte eigenschaft
        Wenn propname = "copyright" Dann
            Dim author As String
            Dim Firma als Zeichenfolge
            Dim yearFrom As String
            Dim yearTo As String
    
            'Holen Sie sich alle geeigneten Variablen
            author = getProperty ("author", "")
            Firma = getProperty ("Firma", "")
            yearFrom = getProperty ("created", "")
            yearTo = Format (Now (), "YYYY")
    
            'Copyright-Symbol einfügen
            getProperty = Chr (169) + ""
    
            'Jahresspanne für Copyright-Vermerk anhängen
            Wenn Jahr von Jahr zu Jahr
                getProperty = getProperty + yearFrom + "-"
            End If
            getProperty = getProperty + yearTo
    
            'füge den Autor hinzu
            getProperty = getProperty + "" + author
    
            'Trennzeichen für Autor / Firma hinzufügen, wenn beide vorhanden sind
            Wenn Len (Autor)> 0 und Len (Firma)> 0 dann
                getProperty = getProperty & ","
            End If
            getProperty = getProperty & company
    
            'verarbeitet, also den Wert zurückgeben
            found = True
        End If
    
        'Geben Sie die Foliennummer in das Dokument ein
        Wenn propname = "page" Dann
            getProperty = processPage.SlideNumber
            found = True
        End If
    
        'Wenn der generierte Name erstellt wurde, wird der Wert zurückgegeben
        Wenn gefunden, dann GoTo ret
    
        'nach MS (Datei) -Standardeigenschaften des angegebenen Werts suchen
        Für jedes p In Application.ActivePresentation.BuiltInDocumentProperties
            Wenn LCase (p.Name) = propname Dann
                getProperty = p.Value
                found = True
                Ausfahrt für
            End If
        Weiter 'p
    
        'nach benutzerdefinierten Eigenschaften des angegebenen Werts suchen
        Wenn gefunden, dann GoTo ret
        Für jedes p In Application.ActivePresentation.CustomDocumentProperties
            Wenn LCase (p.Name) = propname Dann
                getProperty = p.Value
                found = True
                Ausfahrt für
            End If
        Weiter 'p
    ret:
    Funktion beenden
    
    P. Boothroyd
    quelle
    1

    Sie können dieses Problem umgehen, indem Sie benutzerdefinierte Eigenschaften verwenden, zu denen Sie problemlos wechseln können (Sie müssen nicht durch die Folien blättern).

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

    1. Wählen Sie eine Form oder einen Text aus, auf den Sie ein Lesezeichen setzen möchten.
    2. Wählen Sie Datei | Eigenschaften ... und aktivieren Sie die Registerkarte Benutzerdefiniert.
    3. Geben Sie einen Namen für das Lesezeichen ein.
    4. Kreuzen Sie 'Link zum Inhalt' an. Der Wert, der in der nebenstehenden Dropdown-Box angezeigt wird, wenn Sie auf "Link zum Inhalt" klicken, ist ein Verweis auf Ihre Auswahl.
    5. Klicken Sie auf Hinzufügen.
    6. Klicken Sie auf OK, um das Dialogfeld Eigenschaften zu schließen.

    Nachdem Sie ein Lesezeichen erstellt haben, können Sie wie folgt
    dorthin springen: 1. Wählen Sie Bearbeiten | Gehe zu Eigenschaft ...
    2. Klicken Sie im Dialogfeld auf den Eigenschaftsnamen (dies ist der Name, den Sie dem Lesezeichen gegeben haben).
    3. Klicken Sie auf Gehe zu.

    Das Dialogfeld "Gehe zu" enthält eine Liste mit Lesezeichen, auf die Sie doppelklicken können, und zeigt Ihre bevorzugten Textfelder an, die zum Bearbeiten / Einfügen bereit sind.

    thenonhacker
    quelle
    1

    Die einfachste Möglichkeit, dies in Powerpoint zu tun (zumindest für Werte, die auf jeder Folie angezeigt werden), besteht darin, den Folienmaster zu bearbeiten. Tragen Sie den Autorennamen dort ein.

    (Ein möglicher Grund, den Sie und keiner der anderen in Word zulassen, ist, dass die verschiedenen Teams bei Microsoft selten miteinander sprechen ...)

    Tor Iver Wilhelmsen
    quelle
    1
    Siehe den zweiten Absatz in meiner Frage: '... auch wenn Sie verschiedene Masterseiten verwenden ...'
    Rabarberski
    0

    Update für Handle-Code mit ppt 2019: Ich habe die For-Next-Routine ein wenig geändert. Die Ursache ist, dass es für einen Front-End-Benutzer einfacher ist, den "Alternativtext" mit der rechten Maustaste zu ändern:

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