web-dev-qa-db-fra.com

Powerpoint: comment insérer une propriété de document dans la diapositive?

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.)

28
Rabarberski

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.

19

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 
    
    6
    P.Boothroyd

    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/ :

    1. Sélectionnez la forme ou le texte pour lequel vous souhaitez définir un signet.
    2. Sélectionnez Fichier | Propriétés ... et activez l'onglet Personnalisé.
    3. Tapez un nom pour le signet.
    4. 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.
    5. Cliquez sur Ajouter.
    6. 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.

    1
    thenonhacker

    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 ...)

    1

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