Comment puis-je insérer une propriété de document (par exemple le nom de l'auteur) dans une diapositive dans PowerPoint 2007? Je sais que cela peut être fait dans Microsoft Word, mais je ne trouve pas comment le faire dans PowerPoint.
(L'idée est qu'avec une propriété de document, il est facile de modifier, par exemple, le contenu du pied de page dans toutes les diapositives, même si vous utilisez des pages maîtres différentes. S'il existe une solution différente, cela conviendra également.)
Bien que Word puisse le faire, PowerPoint ne le peut pas. Autant que je sache, vous pouvez avoir des propriétés de document dans PPT, mais vous ne pouvez pas les insérer sur une diapositive. Le seul champ de mise à jour disponible pour PowerPoint est la date et le numéro de la diapositive. Quoi qu'il en soit, il pourrait y avoir une solution de contournement dans VBA pour y parvenir. Vous pouvez demander cela à Stackoverflow pour tenter votre chance.
Je viens d'écrire une sous-routine pour mettre des propriétés nommées dans des objets texte étiquetés sur toutes les diapositives.
Pour placer une propriété de fichier sur une ou plusieurs diapositives. Créez une zone de texte pour contenir la chaîne. Dans les propriétés/Texte alternatif, mettez le nom de la propriété entre crochets.
Ensuite, exécutez la macro updateProperties()
.
[title]
- permettrait au titre du document d'être mis à jour sur plusieurs
Deux balises spéciales ont été écrites:
[copyright]
insérerait une chaîne de copyright, c'est-à-dire © 1998-2013 P.Boothroyd, NIS Oskemen [page]
insérerait le numéro de la diapositive à partir de l'onglet éditeur'Copier les propriétés du document dans toutes les diapositives ' (C) 2013, P.Boothroyd pour NIS Oskemen Dim processPage As Slide Sub updateProperties () Dim page As Slide Dim propname As String 'Analyse toutes les diapositives de la présentation active (document) Pour chaque processPage dans Application.ActivePresentation.Slides 'balaie tous les éléments de la page pour la zone de texte avec le champ "altText/title" étiqueté avec "[" "pour chaque objet dans processPage.Shapes Si laissé (obj.Titre, 1 ) = "[" Alors Dim sStart, sEnd As Integer 'Extrait la propriété entre crochets SStart = 2 SEnd = InStr (2, obj. Titre, "]") Propname = Trim (Mid (obj.Titre, sStart, sEnd - 2)) Si obj.Type = msoTextBox Puis 'Définissez la zone de texte à la valeur demandée obj.TextFrame.TextRange.Text = getProperty (propname, obj.TextFrame.TextRange.Text) Fin si Fin si Page suivante 'obj Page suivante End Sub 'Récupère la propriété de document nommée (avec la valeur facultative par défaut) Fonction getProperty (propname, facultatif def As String) As String 'propriété affectée à la valeur par défaut getProperty = def Dim trouvé comme booléen trouvé = False propname = LCase (propname) 'copyright est une propriété générée Si propname = "copyright" Alors Dim auteur As String Dim company As String Dim yearFrom As String Dim yearTo As String 'Obtient toutes les variables appropriées Author = getProperty ("auteur", "") Company = getProperty ("company", "") yearFrom = getProperty ("created", "") yearT o = Format (Now (), "YYYY") 'insérer le symbole de copyright getProperty = Chr (169) + "" 'attachez la durée de l'année à l'avis de copyright Si annéeD'annéePar Puis getProperty = getProperty + yearFrom + "-" Fin Si getProperty = getProperty + yearTo 'ajouter l'auteur getProperty = getProperty + "" + author ' ajouter un séparateur pour l'auteur/l'entreprise si les deux existent Si Len (auteur)> 0 Et Len (entreprise)> 0 Alors GetProperty = getPropriété & "," Fin Si GetProperty = getPropriété & entreprise 'traité, retournez donc la valeur trouvée = Vrai Fin Si ' insérez le numéro de la diapositive dans le document Si propname = "page" Alors getProperty = processPage.SlideNumber trouvé = True End If ', Si le nom généré est créé, renvoie la valeur Si trouvé, puis cliquez sur ' Pour rechercher les propriétés MS (fichier) standard de la valeur nommée pour chaque p dans Application.ActivePresentation.BuiltInDocumentProperties Si LCase (p.Name) = propname Alors getProperty = p.Value found = True Quitter pendant Fin si Suivant 'p ' Rechercher des propriétés personnalisées de la valeur nommée Si trouvé, puis aller à ret pour chaque p dans Application.ActivePresentation.CustomDocumentProperties Si LCase (p.Name) = propname Alors getProperty = p.Value found = True Quitter pour Fin Si Suivant 'p Retourner: Fin Fonction
Une solution de contournement consiste à utiliser des propriétés personnalisées que vous pouvez facilement "Accéder à" (inutile de parcourir les diapositives).
De http://msdn.itags.org/PowerPoint/4426/ :
- Sélectionnez la forme ou le texte pour lequel vous souhaitez définir un signet.
- Sélectionnez Fichier | Propriétés ... et activez l'onglet Personnalisé.
- Tapez un nom pour le signet.
- Cochez 'Lien vers le contenu'. La valeur répertoriée dans la liste déroulante adjacente lorsque vous cochez la case "Lien vers le contenu" fait référence à votre sélection.
- Cliquez sur Ajouter.
- Cliquez sur OK pour fermer la boîte de dialogue Propriétés.
Maintenant que vous avez créé un signet, vous pouvez y accéder comme suit:
1. Sélectionnez Modifier | Aller à la propriété ...
2. Cliquez sur le nom de la propriété dans la boîte de dialogue (il s’agit du nom que vous avez donné au signet).
3. Cliquez sur Go to.
La boîte de dialogue "Aller à" vous présente une liste de signets sur lesquels vous pouvez double-cliquer et va dans vos zones de texte préférées, prêtes à être éditées/collées.
La manière la plus simple de procéder dans PowerPoint (du moins pour les valeurs qui apparaîtront sur chaque diapositive) consiste à modifier le masque des diapositives. Mettez le nom de l'auteur ici.
(Une des raisons possibles que Word vous laisse, et aucun autre ne le fait, est que les différentes équipes de Microsoft se parlent rarement ...)
Mise à jour du code de poignée avec ppt 2019: j'ai légèrement modifié la routine for-next, car il est plus facile pour un utilisateur frontal de modifier le "texte alternatif" à l'aide du bouton droit de la souris:
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