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